1.原理
RSA是一种非对称加密算法。通过生成密钥对,用公钥加密,用私钥解密。对于前后端分离的项目,让前端获取到公钥对敏感数据加密,发送到后端,后端用私钥对加密后的数据进行解密即可。
2.实现
RSA工具类:提供秘钥对生成、公钥获取、私钥解密的方法。
public class RSAUtil {private final static Logger logger = LoggerFactory.getLogger(RSAUtil.class);private static final String RSA = "RSA"; private static final int KEY_SIZE = 2048; // 这里需要保存密钥对KeyPair对象,所以适合用序列化,而不用静态Map保存private static ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // Bouncy Castle加密库提供的一个类,用于为Java提供加密服务private static final BouncyCastleProvider BOUNCY_CASTLE_PROVIDER = new BouncyCastleProvider();// 密钥对生成static void createKey() throws Exception{KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA, BOUNCY_CASTLE_PROVIDER);keyPairGenerator.initialize(KEY_SIZE, new SecureRandom())