/**
* 创建公钥和私钥
* @return
*/
public static Pair<String,String> createPubPrivateKey() throws Exception {
// 公钥私钥构建器
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
// 初始化大小,64的整数倍
keyPairGenerator.initialize(512);
// 生成公钥和私钥
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey aPublic = keyPair.getPublic();
PrivateKey aPrivate = keyPair.getPrivate();
MutablePair<String, String> pair = new MutablePair<>();
pair.setLeft(Base64.encodeBase64String(aPrivate.getEncoded()));
pair.setRight(Base64.encodeBase64String(aPublic.getEncoded()));
System.out.println("private key: "+pair.getLeft());
System.out.println("public key: "+pair.getRight());
System.out.println("--------------------------------------------------------------------------------");
return pair;
}
/**
* rsa 加密
* @param plaintext 明文
* @param pubKey 公钥
* @return
* @throws Exception
*/
public static String encrypt(String plaintext, String pubKey) throws Exception {
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(pubKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] result = cipher.doFinal(plaintext.getBytes("UTF-8"));
return Base64.encodeBase64String(result);
}
/**
* rsa 解密
* @param ciphertext 密文
* @param prikey 私钥
* @return
* @throws Exception
*/
public static String decrypt(String ciphertext, String prikey) throws Exception {
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(prikey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] result = cipher.doFinal(Base64.decodeBase64(ciphertext));
return new String(result);
}
RAS加解密
最新推荐文章于 2024-05-17 18:51:33 发布