mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
添加RSA非对称加密工具类
This commit is contained in:
+102
@@ -0,0 +1,102 @@
|
||||
package com.cf.imes.module.system.util.rsa;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
|
||||
import cn.hutool.crypto.asymmetric.KeyType;
|
||||
import cn.hutool.crypto.asymmetric.RSA;
|
||||
import java.security.KeyPair;
|
||||
import java.util.LinkedList;
|
||||
|
||||
/**
|
||||
* 非对称加密工具类
|
||||
*
|
||||
* @author edimen
|
||||
*/
|
||||
public class AsymmetricAlgorithmUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 公钥加密(解密就要用到对应的私钥)
|
||||
*
|
||||
* @param msg 明文信息
|
||||
* @param pubKey 公钥,用来加密明文
|
||||
* @return
|
||||
*/
|
||||
public static String encryptByPublic(String msg, String pubKey) {
|
||||
RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), null, pubKey);
|
||||
return rsa.encryptBase64(msg, KeyType.PublicKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥解密
|
||||
*
|
||||
* @param encryptMsg 公钥加密的密文
|
||||
* @param priKey 私钥,用来解密密文
|
||||
* @return
|
||||
*/
|
||||
public static String decryptByPrivate(String encryptMsg, String priKey) {
|
||||
RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), priKey, null);
|
||||
return rsa.decryptStr(encryptMsg, KeyType.PrivateKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥加密(解密就要用到对应的公钥)
|
||||
*
|
||||
* @param msg 明文信息
|
||||
* @param priKey 私钥,用来加密明文
|
||||
* @return
|
||||
*/
|
||||
public static String encryptByPrivate(String msg, String priKey) {
|
||||
RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), priKey, null);
|
||||
return rsa.encryptBase64(msg, KeyType.PrivateKey);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 公钥解密
|
||||
*
|
||||
* @param encryptMsg 密文
|
||||
* @param pubKey 公钥,用来解密
|
||||
* @return
|
||||
*/
|
||||
public static String decryptByPublic(String encryptMsg, String pubKey) {
|
||||
RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), null, pubKey);
|
||||
return rsa.decryptStr(encryptMsg, KeyType.PublicKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取公私钥集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static LinkedList<String> getPriKeyAndPubKey() {
|
||||
KeyPair pair = SecureUtil.generateKeyPair("RSA");
|
||||
String privateKey = Base64.encode(pair.getPrivate().getEncoded());
|
||||
String publicKey = Base64.encode(pair.getPublic().getEncoded());
|
||||
LinkedList<String> keys = new LinkedList<>();
|
||||
keys.add(privateKey);
|
||||
keys.add(publicKey);
|
||||
return keys;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
LinkedList<String> priKeyAndPubKey = AsymmetricAlgorithmUtil.getPriKeyAndPubKey();
|
||||
String privateKey = priKeyAndPubKey.get(0);
|
||||
String publicKey = priKeyAndPubKey.get(1);
|
||||
String text = "HelloWorld";
|
||||
|
||||
String encryptByPublic = AsymmetricAlgorithmUtil.encryptByPublic(text, publicKey);
|
||||
System.out.println(encryptByPublic);
|
||||
String s = AsymmetricAlgorithmUtil.decryptByPrivate(encryptByPublic, privateKey);
|
||||
System.out.println("公钥加密私钥解密:"+s);
|
||||
|
||||
String encryptByPrivate = AsymmetricAlgorithmUtil.encryptByPrivate(text, privateKey);
|
||||
System.out.println(encryptByPrivate);
|
||||
String s1 = AsymmetricAlgorithmUtil.decryptByPublic(encryptByPrivate,publicKey);
|
||||
System.out.println("私钥加密公钥解密:"+s1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user