说明:本人使用的是hutool的工具类,Hutool官网
这里演示怎么使用
1.自动生成公钥和私钥进行字符串加密和解密
1.1代码如下
public static void main(String[] args) {
String str = "地球人"; // 创建测试数据
// 方法一: 从RSA对象中获得随机生成的 公钥 和 私钥 start
RSA rsa = SecureUtil.rsa(); // 生成RSA对象
// PrivateKey privateKey = rsa.getPrivateKey(); // 自动生成的私钥
String privateKey = rsa.getPrivateKeyBase64(); // 或者使用字符串privateKey
// PublicKey publicKey = rsa.getPublicKey(); // 自动生成的公钥
String publicKey = rsa.getPublicKeyBase64(); // 或者使用字符串publicKey
// 方法一: 从RSA对象中获得随机生成的 公钥 和 私钥 start
// 方法二: 不从对象中获得 公钥 和 私钥 直接根据算法RSA随机生成 公钥 和 私钥 start
// KeyPair pair = SecureUtil.generateKeyPair("RSA");
// PrivateKey privateKey = pair.getPrivate();
// PublicKey publicKey = pair.getPublic();
// 方法二: 不从对象中获得 公钥 和 私钥 直接根据算法RSA随机生成 公钥 和 私钥 start
// PS: 方法一和方法二可以任远其中一个
RSA encryRSA = new RSA(null, publicKey); // 创建新的RSA对象用于加密数据
String encryptData = encryRSA.encryptBcd(str, KeyType.PublicKey);
RSA decryRSA = new RSA(privateKey, null); // 创建新的RSA对象用于解密数据
String decryptData = decryRSA.decryptStr(encryptData, KeyType.PrivateKey);
System.out.println(decryptData); // 输出 地球人
}
2.自动生成公钥和私钥进行字符数组加密和解密
2.1代码如下
String str = "地球人";
byte[] bytes = str.getBytes(CharsetUtil.CHARSET_UTF_8);
RSA rsa = SecureUtil.rsa(); // 生成RSA对象
// PrivateKey privateKey = rsa.getPrivateKey(); // 自动生成的私钥
String privateKey = rsa.getPrivateKeyBase64(); // 或者使用字符串privateKey
// PublicKey publicKey = rsa.getPublicKey(); // 自动生成的公钥
String publicKey = rsa.getPublicKeyBase64(); // 或者使用字符串publicKey
RSA encryRSA = new RSA(null, publicKey); // 创建新的RSA对象用于加密数据
byte[] encrypt = encryRSA.encrypt(bytes, KeyType.PublicKey);
RSA decryRSA = new RSA(privateKey, null); // 创建新的RSA对象用于解密数据
byte[] decrypt = decryRSA.decrypt(encrypt, KeyType.PrivateKey);
System.out.println(new String(decrypt, CharsetUtil.CHARSET_UTF_8));