java 代码
Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding");
代替
Cipher.getInstance("RSA")
匹配node-rsa
用NODE RSA JS 加密解密正常,用JAVA RSAUtils工具类加密解密正常。但是用node加密玩的java解密不了。原因:node默认的是
DEFAULT_ENCRYPTION_SCHEME = 'pkcs1_oaep'
而java中默认的是pkcs1。
另:NODE-RSA中其它的默认值:
var SUPPORTED_HASH_ALGORITHMS = {
node10: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],
node: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],
iojs: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],
browser: ['md5', 'ripemd160', 'sha1', 'sha256', 'sha512']
};
var DEFAULT_ENCRYPTION_SCHEME = 'pkcs1_oaep';
var DEFAULT_SIGNING_SCHEME = 'pkcs1';
var DEFAULT_EXPORT_FORMAT = 'private';
var EXPORT_FORMAT_ALIASES = {
'private': 'pkcs1-private-pem',
'private-der': 'pkcs1-private-der',
'public': 'pkcs8-public-pem',
'public-der': 'pkcs8-public-der',
};
node-rsa
var priKey = new NodeRSA();
priKey.setOptions({encryptionScheme: 'pkcs1'});
// priKey.importKey("-----BEGIN PRIVATE KEY-----\n"+privateKey+"-----END PRIVATE KEY-----","pkcs8-private")
priKey.importKey(privateKey, "pkcs8-private")
// priKey.importKey(privateKey)
// priKey = new NodeRSA(privateKey, {encryptionScheme: 'pkcs1'});
// const rsa_encrypt = (data) => {
// let key = new NodeRSA('-----BEGIN PUBLIC KEY-----' + 'MIGfMA0。。。。。。。AQAB' + '-----END PUBLIC KEY-----');
// // key.generateKeyPair(1024);
// key.setOptions({encryptionScheme: 'pkcs1'})
// let encryptKey = key.encrypt(data, 'base64') return encryptKey;
// }
console.log(priKey)
// var decrypted = priKey.decrypt(cipher, 'utf8');
var decrypted = priKey.decryptPublic(cipher, 'utf8');
console.log(decrypted)
参考: