Java加密算法 RSA

时间:2023-12-26 16:08:01
2015-06-06 08:44 511人阅读 评论(0) 收藏 举报
Java加密算法 RSA 分类:
JAVA(57) Java加密算法 RSA

公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥

  1. package com.stone.security;
  2. import java.security.KeyPair;
  3. import java.security.KeyPairGenerator;
  4. import java.security.PrivateKey;
  5. import java.security.PublicKey;
  6. import java.util.Arrays;
  7. import javax.crypto.Cipher;
  8. /**
  9. * RSA算法 公钥加密 非对称加密
  10. * @author stone
  11. * @date 2014-03-11 00:28:38
  12. */
  13. public class RSA {
  14. public static final String KEY_ALGORITHM = "RSA";
  15. public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";
  16. public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用
  17. public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用
  18. static PublicKey publicKey;
  19. static PrivateKey privateKey;
  20. static Cipher cipher;
  21. static KeyPair keyPair;
  22. public static void main(String[] args) throws Exception {
  23. method1("斯柯达U*(Sfsad7f()*^%%$");
  24. method2("斯柯达U*(Sfsad7f()*^%%$");
  25. method3("斯柯达U*(Sfsad7f()*^%%$");
  26. }
  27. /**
  28. * 公钥加密,私钥解密    使用默认CIPHER_ALGORITHM_ECB1
  29. * @param str
  30. * @throws Exception
  31. */
  32. static void method1(String str) throws Exception {
  33. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  34. KeyPair keyPair = keyGenerator.generateKeyPair();
  35. publicKey = keyPair.getPublic();
  36. privateKey = keyPair.getPrivate();
  37. cipher = Cipher.getInstance(KEY_ALGORITHM);
  38. cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密
  39. byte[] encrypt = cipher.doFinal(str.getBytes());
  40. System.out.println("公钥加密后1:" + Arrays.toString(encrypt));
  41. cipher.init(Cipher.DECRYPT_MODE, privateKey);//私钥解密
  42. byte[] decrypt = cipher.doFinal(encrypt);
  43. System.out.println("私钥解密后1:" + new String(decrypt));
  44. }
  45. /**
  46. * 私钥加密,公钥解密    使用默认CIPHER_ALGORITHM_ECB1
  47. * @param str
  48. * @throws Exception
  49. */
  50. static void method2(String str) throws Exception {
  51. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  52. KeyPair keyPair = keyGenerator.generateKeyPair();
  53. publicKey = keyPair.getPublic();
  54. privateKey = keyPair.getPrivate();
  55. cipher = Cipher.getInstance(KEY_ALGORITHM);
  56. cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
  57. byte[] encrypt = cipher.doFinal(str.getBytes());
  58. System.out.println("私钥加密后2:" + Arrays.toString(encrypt));
  59. cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
  60. byte[] decrypt = cipher.doFinal(encrypt);
  61. System.out.println("公钥解密后2:" + new String(decrypt));
  62. }
  63. /**
  64. * 私钥加密,公钥解密    使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding
  65. * @param str
  66. * @throws Exception
  67. */
  68. static void method3(String str) throws Exception {
  69. KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
  70. KeyPair keyPair = keyGenerator.generateKeyPair();
  71. publicKey = keyPair.getPublic();
  72. privateKey = keyPair.getPrivate();
  73. cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);
  74. cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
  75. byte[] encrypt = cipher.doFinal(str.getBytes());
  76. System.out.println("私钥加密后3:" + Arrays.toString(encrypt));
  77. cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
  78. byte[] decrypt = cipher.doFinal(encrypt);
  79. System.out.println("公钥解密后3:" + new String(decrypt));
  80. }
  81. }