RSA加解密过程

 1 package com.pff.pff;
 2 
 3 import java.security.KeyFactory;
 4 import java.security.KeyPair;
 5 import java.security.KeyPairGenerator;
 6 import java.security.PrivateKey;
 7 import java.security.PublicKey;
 8 import java.security.spec.PKCS8EncodedKeySpec;
 9 import java.security.spec.X509EncodedKeySpec;
10 
11 import javax.crypto.Cipher;
12 
13 import org.apache.commons.codec.binary.Hex;
14 
15 public class Rsa {
16     private static String test = "pff";
17 
18     public static void main(String[] args) {
19         try {
20             // 生成公私秘钥
21             KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
22             KeyPair generateKeyPair = keyPairGenerator.generateKeyPair();
23             PrivateKey private1 = generateKeyPair.getPrivate();
24             PublicKey public1 = generateKeyPair.getPublic();
25             byte[] encoded1 = private1.getEncoded();
26             byte[] encoded2 = public1.getEncoded();
27             System.out.println("得到的私钥= " + Hex.encodeHexString(encoded1));
28             System.out.println("得到的公钥= " + Hex.encodeHexString(encoded2));
29             // 转换得到私钥
30             PKCS8EncodedKeySpec pKCS8EncodedKeySpec = new PKCS8EncodedKeySpec(encoded1);
31             KeyFactory instance = KeyFactory.getInstance("RSA");
32             PrivateKey generatePrivate = instance.generatePrivate(pKCS8EncodedKeySpec);
33             // 转换得到公钥
34             X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(encoded2);
35             PublicKey generatePublic = instance.generatePublic(x509EncodedKeySpec);
36             // 私钥加密过程
37             Cipher cipher = Cipher.getInstance("RSA");
38             cipher.init(Cipher.ENCRYPT_MODE, generatePrivate);
39             byte[] doFinal1 = cipher.doFinal(test.getBytes());
40             System.out.println("私钥加密结果= " + Hex.encodeHexString(doFinal1));
41             // 私钥解密过程
42             cipher.init(Cipher.DECRYPT_MODE, generatePublic);
43             byte[] doFinal2 = cipher.doFinal(doFinal1);
44             System.out.println("公钥解密结果= " + new String(doFinal2));
45             // 公钥加密
46             cipher.init(Cipher.ENCRYPT_MODE, generatePublic);
47             byte[] doFinal3 = cipher.doFinal(test.getBytes());
48             System.out.println("公钥加密结果= " + Hex.encodeHexString(doFinal3));
49             // 私钥解密
50             cipher.init(Cipher.DECRYPT_MODE, generatePrivate);
51             byte[] doFinal4 = cipher.doFinal(doFinal3);
52             System.out.println("公钥解密结果= " + new String(doFinal4));
53         } catch (Exception e) {
54             e.printStackTrace();
55         }
56 
57     }
58 
59 }

猜你喜欢

转载自www.cnblogs.com/wings-ff/p/9229072.html
今日推荐