参考了上面的链接
js加密代码
var forge = require('node-forge');
var base64 = require('Base64');
var pki = forge.pki;
publicKey = pki.publicKeyFromPem("-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlKDo3Ipkji7ikUyG8iuiqfus3F5m7yW3\n" +
"XwOk7mgzQwA9Ebe2P+sdkaAQTJ6p8cAde+NwLl6qqBJL/I6aGZvwCt7a8jqMjlw8Zgzx8r2Xk/y0\n" +
"h+qtnzzByCcg5YQdIetHNi5EsbsBneCYbe3TsLdmdnZOSN8unCm2jJEBErcc4Jrmut/Vc6ob5A/Y\n" +
"N7wDpSiYVYfW06Drgeu9iviUyA0tHBWLmOzVIQvELe/dJ5IhzjAuKVkwyRQnDQdaunHw1wBgpm21\n" +
"h+pKEUZqMC601cfj9Qofq+sdETVcNFQZWUehWkhc2JrPVOnjEoitWUNh76LHYYWOH+gxTGWF0Mne\n" +
"SrByNQIDAQAB" +
"-----END PUBLIC KEY-----");
var encrypted = publicKey.encrypt("12345", 'RSA-OAEP', {
mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
});
console.log("base64转码后:" + base64.btoa(encrypted));
java解密代码
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding", new BouncyCastleProvider());
//设置为解密模式,用私钥解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
//base64转换
String encoData=Base64Decoder.decode(encrypt);
//解密
byte[] data = cipher.doFinal(encoData);
System.out.println("解密后的数据:"+data);
java 密钥对生成
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA",new BouncyCastleProvider());
SecureRandom random = new SecureRandom();
keyPairGenerator.initialize(RSAUtils.KEYSIZE, random);
// 生成钥匙对
KeyPair keyPair = keyPairGenerator.generateKeyPair();
// 得到公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
// 得到私钥
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
sha256写法参考:Incompatible Javascript and Java encrypted content. · Issue #757 · digitalbazaar/forge · GitHub
var encrypted = publicKey.encrypt("123swssss", 'RSA-OAEP', {
md: forge.md.sha256.create(),
mgf1: {
md: forge.md.sha256.create()
}
});
java对应
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA256AndMGF1Padding", new BouncyCastleProvider());
版权声明:本文为sinat_25052547原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。