RSA node解密 java 加密的注意事项

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)

参考:

RSA加密解密坑_马志宇的专栏-CSDN博客

RSA Java加密和Node.js解密不起作用 | 码农家园

Guess you like

Origin blog.csdn.net/sjpeter/article/details/121403178