public class RSACrytography {
//生成秘钥对
public static KeyPair genKeyPair(int keyLength) throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(keyLength);
return keyPairGenerator.generateKeyPair();
}
//生成字符串的公钥
public static String getPublicKey(KeyPair keyPair) throws Exception {
PublicKey publicKey = keyPair.getPublic();
return new String(Base64.getEncoder().encode(publicKey.getEncoded()));
}
//生成字符串的私钥
public static String getPrivateKey(KeyPair keyPair) throws Exception{
PrivateKey privateKey = keyPair.getPrivate();
return new String(Base64.getEncoder().encode(privateKey.getEncoded()));
}
//公钥加密
public static String encrypt(byte[] content, String publicKeyString) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE,getPublicKey(publicKeyString));
return new String(Base64.getEncoder().encode(cipher.doFinal(content)));
}
//私钥解密
public static String decrypt(String content, String privateKeyString) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKeyString));
return new String(cipher.doFinal(Base64.getDecoder().decode(content)));
}
//将base64编码后的公钥字符串转成PublicKey实例
private static PublicKey getPublicKey(String publicKey) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(publicKey.getBytes("UTF-8"));
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return keyFactory.generatePublic(keySpc);
}
//将base64编码后的私钥字符串转成PprivateKey实例
private static PrivateKey getPrivateKey(String privateKey) throws Exception{
byte[] keyBytes = Base64.getDecoder().decode(privateKey.getBytes("UTF-8"));
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return keyFactory.generatePrivate(keySpec);
}
}
密码公钥加密私钥解密
最新推荐文章于 2022-06-07 17:25:32 发布