版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songyanfei1205/article/details/80691881
填充方式是:PKCS1_PADDING
字符集是:gb2312
秘钥位数是: 1024bit
秘钥格式是:PKCS#8
页面使用公钥加密 加密算法是jsencrypt.min.js
页面写法如下:
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);// publicKey表示从后台生成的公钥
var encryptData = encrypt.encrypt(password);//加密后的字符串 password表示需要加密的文本
后台使用私钥解密 解密算法是RSAUtil.java
后台写法如下:
/**
*生成公钥和私钥
*/
public Map<String, Object> getRsaKey(HttpServletRequest request){
Map<String, Object> rsaMap = new HashMap<String, Object>();
try {
//生成公钥和私钥
Map<String, Key> map = RSACoder.initKey();
RSAPublicKey publicKey = (RSAPublicKey) map.get(RSACoder.PUBLIC_KEY);
RSAPrivateKey privateKey = (RSAPrivateKey) map.get(RSACoder.PRIVATE_KEY);
//模 16进制
String modulus16 = publicKey.getModulus().toString(16);
//公钥指数
String publicExponent16 = publicKey.getPublicExponent().toString(16);
//把公钥传递给前台
rsaMap.put("publicKey", RSACoder.encryptBASE64(publicKey.getEncoded()));
System.err.println("modulus:"+modulus16);
System.err.println("publicExponent:"+publicExponent16);
//把私钥存放在session中 用完清空session的值privateKey
RSAUtils.privateKey.put(request.getSession().getId(), privateKey);
System.err.println("公钥"+RSACoder.encryptBASE64(publicKey.getEncoded()));
System.err.println("私钥"+RSACoder.encryptBASE64(privateKey.getEncoded()));
} catch (Exception e) {
e.printStackTrace();
}
return rsaMap;
}
/**
*解密
*/
public String decrypPassword(String password){
return new String(RSAUtil.decryptByPrivateKey(password, RSAUtils.privateKey.get(request.getSession().getId())));
}
验证加密解密的正确性:
1、打开网址:http://tool.chacuo.net/cryptrsapubkey
2、把程序生成的公钥和私钥拷贝出来
3、将生成的公钥和私钥都以64个字符一行换行整理出来;例如:
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/oPDBI4GcvfIoN1ld/1nhvAe4
y66rAvm7BjkMGPC+iTyVJa4+zyxf1s+Su5hXBS5zQ2PKaUZGE7+EpEO/TEPRLJhg
th3N8DuIiw/6QRAzMSQV2VlmmihambMb0rLDTonnXjvEPsvdySLR3inRwZAdq6Fo
3tLdYbk3SwnhIOQl3QIDAQAB
4、点击网页上链接 'rsa公钥加密解密' ,把生成的公钥粘贴到文本框
注意:粘贴在-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY-----中间
5、输入要加密的文本
6、点击RSA公钥加密按钮,即可生成密文。如:
TZIFxU/vzOEPKw5L8fUh/dEYkzpgDJ5gVi0psfF5z7I1WaHWocB5JSz/tKqNNgcj6/CTf3U6Rtyhqxrzi/RBKuZ5P8qVlDvJTeaoTEgJtO5iQKKwQnIiqtPLDH2e3YluF+uSyqq/oD47z6oegnuIhawZd8/dSAn76j2j8w9w8lRLVowCO6iOlUOXgEBz5SgKyfWlXVP4vBKw0v+T9ALoAJtfZ2K4EY8bx84/Iu6xjsqrSrz1HmI4GiPrIba6OHyyzwNq4WBLrEBQI5laERw2jQIempVcLTGsE8d3hdm2xILHE2s5MENOKz0SzedTqV3iSyxcSF/WrLD28uz6N67afw==
7、同理,点击网页上链接 'rsa私钥加密解密' ,把生成的私钥粘贴到输入加密私钥的文本框中
注意:粘贴在-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----中间
8、将上面的密文粘贴粘贴到 待加密、解密的文本框中
9、点击RSA私钥解密按钮,即可生成看到解密出来的明文。
10、注意第3步,公钥和私钥是以64个字符一行。
相关js文件和java文件下载链接