Java加密算法 RSA

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值