快速业务通道

Java中常用的加密算法MD5,SHA,RSA的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

Java中常用的加密算法MD5,SHA,RSA的应用

时间:2011-02-21 马瞿俊

1. MD5加密,常用于加密用户名密码,当用户验证时。

protected byte[] encrypt(byte[] obj) ...{   try ...{     MessageDigest md5 = MessageDigest.getInstance("MD5");       md5.update(obj);     return md5.digest();   } catch (NoSuchAlgorithmException e) ...{     e.printStackTrace();   } }

2. SHA加密,与MD5相似的用法,只是两者的算法不同。

protected byte[] encrypt(byte[] obj) ...{   try ...{     MessageDigest sha = MessageDigest.getInstance("SHA");       sha.update(obj);     return sha.digest();   } catch (NoSuchAlgorithmException e) ...{     e.printStackTrace();   } }

3. RSA加密,RAS加密允许解密。常用于文本内容的加密。

import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import javax.crypto.Cipher; /** *//** * <b>RSAEncrypt</b> * <p> * @author maqujun * @see */ public class RSAEncrypt ...{   /** *//** * Main method for RSAEncrypt.    * @param args    */   public static void main(String[] args) ...{     try ...{       RSAEncrypt encrypt = new RSAEncrypt();       String encryptText = "encryptText";       KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");       keyPairGen.initialize(1024);       KeyPair keyPair = keyPairGen.generateKeyPair();       // Generate keys       RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();       RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();       byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes());       byte[] de = encrypt.decrypt(privateKey,e);       System.out.println(encrypt.bytesToString(e));       System.out.println(encrypt.bytesToString(de));     } catch (Exception e) ...{       e.printStackTrace();     }   } /** *//**    * Change byte array to String.    * @return byte[]    */   protected String bytesToString(byte[] encrytpByte) ...{     String result = "";     for (Byte bytes : encrytpByte) ...{       result += (char) bytes.intValue();     }     return result;   } /** *//**    * Encrypt String.    * @return byte[]    */   protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) ...{     if (publicKey != null) ...{       try ...{         Cipher cipher = Cipher.getInstance("RSA");         cipher.init(Cipher.ENCRYPT_MODE, publicKey);         return cipher.doFinal(obj);       } catch (Exception e) ...{         e.printStackTrace();       }     }     return null;   }   /** *//**    * Basic decrypt method    * @return byte[]    */   protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) ...{     if (privateKey != null) ...{         try ...{           Cipher cipher = Cipher.getInstance("RSA");           cipher.init(Cipher.DECRYPT_MODE, privateKey);           return cipher.doFinal(obj);         } catch (Exception e) ...{           e.printStackTrace();         }       }     return null;   } }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号