论坛首页 入门技术论坛

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

浏览 6076 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-20  
最近工作中需要使用Java中的内置加密算法的应用,在此把简单的代码和大家共享一下。
1. MD5加密,常用于加密用户名密码,当用户验证时。没有解密的方法。

java 代码
  1. protected byte[] encrypt(byte[] obj) {
  2. try {
  3. MessageDigest md5 = MessageDigest.getInstance("MD5");
  4. md5.update(obj);
  5. return md5.digest();
  6. } catch (NoSuchAlgorithmException e) {
  7. e.printStackTrace();
  8. }
  9. }



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

java 代码
  1. protected byte[] encrypt(byte[] obj) {
  2. try {
  3. MessageDigest sha = MessageDigest.getInstance("SHA");
  4. sha.update(obj);
  5. return sha.digest();
  6. } catch (NoSuchAlgorithmException e) {
  7. e.printStackTrace();
  8. }
  9. }



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

java 代码
  1. import java.security.KeyPair;
  2. import java.security.KeyPairGenerator;
  3. import java.security.interfaces.RSAPrivateKey;
  4. import java.security.interfaces.RSAPublicKey;
  5. import javax.crypto.Cipher;
  6. /**
  7. * RSAEncrypt
  8. *

  9. * @author maqujun
  10. * @see
  11. */
  12. public class RSAEncrypt {
  13. /**
  14. * Main method for RSAEncrypt.
  15. * @param args
  16. */
  17. public static void main(String[] args) {
  18. try {
  19. RSAEncrypt encrypt = new RSAEncrypt();
  20. String encryptText = "encryptText";
  21. KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
  22. keyPairGen.initialize(1024);
  23. KeyPair keyPair = keyPairGen.generateKeyPair();
  24. // Generate keys
  25. RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
  26. RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
  27. byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes());
  28. byte[] de = encrypt.decrypt(privateKey,e);
  29. System.out.println(encrypt.bytesToString(e));
  30. System.out.println(encrypt.bytesToString(de));
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. /**
  36. * Change byte array to String.
  37. * @return byte[]
  38. */
  39. protected String bytesToString(byte[] encrytpByte) {
  40. String result = "";
  41. for (Byte bytes : encrytpByte) {
  42. result += (char) bytes.intValue();
  43. }
  44. return result;
  45. }
  46. /**
  47. * Encrypt String.
  48. * @return byte[]
  49. */
  50. protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) {
  51. if (publicKey != null) {
  52. try {
  53. Cipher cipher = Cipher.getInstance("RSA");
  54. cipher.init(Cipher.ENCRYPT_MODE, publicKey);
  55. return cipher.doFinal(obj);
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. return null;
  61. }
  62. /**
  63. * Basic decrypt method
  64. * @return byte[]
  65. */
  66. protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) {
  67. if (privateKey != null) {
  68. try {
  69. Cipher cipher = Cipher.getInstance("RSA");
  70. cipher.init(Cipher.DECRYPT_MODE, privateKey);
  71. return cipher.doFinal(obj);
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. }
  76. return null;
  77. }
  78. }

加密算法还有很多,以后用到的话再加入。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics