Java的小小世界|RSA之基于hutool的快速实现

刚刚临时帮同事写个rsa加密的工具包,基于hutool的快速实现,随手给需要的小朋友,
非依赖hutool的请看我另外的文章,RSA加密算法Java应用解析-目前地球上最有影响力的加密算法
RSA工具包
2020年08月02日21:06:42 关于RSA就不多说了,直接上干货
一、首先获取公私钥
// 第一次使用时获取,获取后保存公私钥,不要重复获取Map, String> stringStringMap = RsaUtils.generateKeyPair(); String RSAPublicKey = stringStringMap.get(PUBLIC_KEY); String RSAPrivateKey = stringStringMap.get(PRIVATE_KEY);

二、公钥加密
//直接调用encrypt方法String content = "拳打南山敬老院,脚踢北海幼儿园"; String encrypt = RsaUtils.encrypt(content, RSAPublicKey);

三、私钥解密
String decrypt = RsaUtils.decrypt(encrypt, RSAPrivateKey);

附代码
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import sun.misc.BASE64Encoder; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.util.HashMap; import java.util.Map; public class RsaUtils {/** * 类型 */ public static final String ENCRYPT_TYPE = "RSA"; /** * 获取公钥的key */ private static final String PUBLIC_KEY = "RSAPublicKey"; /** * 获取私钥的key */ private static final String PRIVATE_KEY = "RSAPrivateKey"; /** * 公钥加密 * @param content 要加密的内容 * @param publicKey 公钥 */ public static String encrypt(String content, PublicKey publicKey) { try{ RSA rsa = new RSA(null,publicKey); return rsa.encryptBase64(content, KeyType.PublicKey); }catch (Exception e){ e.printStackTrace(); } return null; }/** * 公钥加密 * @param content 要加密的内容 * @param publicKey 公钥 */ public static String encrypt(String content, String publicKey) { try{ RSA rsa = new RSA(null,publicKey); return rsa.encryptBase64(content, KeyType.PublicKey); }catch (Exception e){ e.printStackTrace(); } return null; }/** * 私钥解密 * @param content 要解密的内容 * @param privateKey 私钥 */ public static String decrypt(String content, PrivateKey privateKey) { try { RSA rsa = new RSA(privateKey,null); return rsa.decryptStr(content, KeyType.PrivateKey); } catch (Exception e){ e.printStackTrace(); } return null; }/** * 私钥解密 * @param content 要解密的内容 * @param privateKey 私钥 */ public static String decrypt(String content, String privateKey) { try { RSA rsa = new RSA(privateKey,null); return rsa.decryptStr(content, KeyType.PrivateKey); } catch (Exception e){ e.printStackTrace(); } return null; }/** * 获取公私钥-请获取一次后保存公私钥使用 * @return */ public static Map,String> generateKeyPair() { try { KeyPair pair = SecureUtil.generateKeyPair(ENCRYPT_TYPE); PrivateKey privateKey = pair.getPrivate(); PublicKey publicKey = pair.getPublic(); // 获取 公钥和私钥 的 编码格式(通过该 编码格式 可以反过来 生成公钥和私钥对象) byte[] pubEncBytes = publicKey.getEncoded(); byte[] priEncBytes = privateKey.getEncoded(); // 把 公钥和私钥 的 编码格式 转换为 Base64文本 方便保存 String pubEncBase64 = new BASE64Encoder().encode(pubEncBytes); String priEncBase64 = new BASE64Encoder().encode(priEncBytes); Map, String> map = new HashMap, String>(2); map.put(PUBLIC_KEY,pubEncBase64); map.put(PRIVATE_KEY,priEncBase64); return map; } catch (Exception e){ e.printStackTrace(); } return null; }}

关注Github:1/2极客
关注博客:御前提笔小书童
关注网站:HuMingfeng
【Java的小小世界|RSA之基于hutool的快速实现】关注公众号:开发者的花花世界
Java的小小世界|RSA之基于hutool的快速实现
文章图片

    推荐阅读