package com.jideos.jnotes.utils;import cn.hutool.core.codec.Base64;import org.springframework.stereotype.Component;import javax.crypto.Cipher;import java.security.KeyFactory;import java.security.PrivateKey;import java.security.PublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;/** * 非对称加密公钥和私钥 * * @author 杨胖胖 */@Componentpublic class RsaUtil { private final static String PRIVATE_KEY = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAgPlRaU1JWFaWcadfAN/EnmvxTADfpszOj2J6xagn2uZSQ1VtuTaGPE2M8uqdcD+dyUZH0+M0kWWc2AzqtTLOPQIDAQABAkBFXtSNIQbcPuZ4hx+wZqto0oJc8PNa0jogIUYL3mBhelE1YsKxCvuNnJzYIJr/aa9tUX6Oi4s6sZM6IC4ALec5AiEAt8cLB7pcJVoc9Al+P8jADb4q1mtb8+Vin79ADLAExOMCIQCzqMBW5CE2MNct334IzNYuv7PATo6lu+GnntbyUsWqXwIgWYmWbCt13ZTr6lH9uqHaQFfYkyM3Z7rotB//2q6fhDUCIQCGIvFwLqXJUw/llR8BrQYhI0ouw7hnb26cetCbXkds2wIgRZuMzZRTAOOhiJsLWW0o6GEMljc0Dff69RFdA/XqBd4="; private final static String PUBLIC_KEY = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAID5UWlNSVhWlnGnXwDfxJ5r8UwA36bMzo9iesWoJ9rmUkNVbbk2hjxNjPLqnXA/nclGR9PjNJFlnNgM6rUyzj0CAwEAAQ=="; private final static String ALGORITHM = "RSA"; /** * 私钥加密 * * @param data 待加密数据 * @return byte[] 加密数据 */ public byte[] encryptByPrivateKey(byte[] data) throws Exception { //取得私钥 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(Base64.decode(PRIVATE_KEY)); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); //生成私钥 PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); //数据加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 公钥加密 * * @param data 待加密数据 * @return byte[] 加密数据 */ public byte[] encryptByPublicKey(byte[] data) throws Exception { //实例化密钥工厂 KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); //初始化公钥 //密钥材料转换 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(Base64.decode(PUBLIC_KEY)); //产生公钥 PublicKey pubKey = keyFactory.generatePublic(x509KeySpec); //数据加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, pubKey); return cipher.doFinal(data); } /** * 私钥解密 * * @param data 待解密数据 * @return byte[] 解密数据 */ public byte[] decryptByPrivateKey(byte[] data) throws Exception { //取得私钥 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(Base64.decode(PRIVATE_KEY)); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); //生成私钥 PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); //数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 公钥解密 * * @param data 待解密数据 * @return byte[] 解密数据 */ public byte[] decryptByPublicKey(byte[] data) throws Exception { //实例化密钥工厂 KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); //初始化公钥 //密钥材料转换 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(Base64.decode(PUBLIC_KEY)); //产生公钥 PublicKey pubKey = keyFactory.generatePublic(x509KeySpec); //数据解密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, pubKey); return cipher.doFinal(data); }}