已有服务器应用的是ASP.net进行RSA加密,
新服务器应用koa2,
加密后的后果应用nodejs自带的crypto和node-rsa均无奈解密,
起因未明。
试用多个组件后,发现node-jsencrypt的加密解密后果能够通用。
故特意记录。

简略的解密流程:

const JSEncrypt = require("node-jsencrypt");const PUBLICKEY = `-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCFSws2t8RQ8IlrXQmkE7lOYQ5hXya+HdXrBDh5zGv3+suPEj8K+sLuPfsGCRC6VbyKkzwGECNrzwOPWTx7szHMp4OuIRCe8wEyV2TAri7eRukgelXVG4Fh4F1jS14jdWeTfRXFxygkkGTyCvKbWzm9Hp93fNKDHuB+bTvRS9YMuwIDAQAB-----END PUBLIC KEY-----`;//公钥    const rsaEncrypt = `密文`;    let jsencrypt = new JSEncrypt();    jsencrypt.setPrivateKey(PRIVATEKEY);    let decrypt = jsencrypt.decrypt(rsaEncrypt)

字符串长度超过117时,该组件就不能间接解密,如果超长字符串加密,须要进行宰割解决
长字符串的加密解决:

//宰割    if (querystr.length > 117) {        let cnt = Number.parseInt(querystr.length / 117) + 1;        ori_slice.push(querystr.slice(0, len_max))        for (let i = 1; i < cnt; i++) {            const _slice = querystr.slice(len_max * i).trim();            if (_slice.length > 0) {                ori_slice.push(querystr.slice(len_max * i));            }        }    }
//加密并组合let encrypt_list = ori_slice.map(i => {        let jsencrypt = new JSEncrypt();        jsencrypt.setPublicKey(PUBLICKEY);        let encrypt = jsencrypt.encrypt(i);        return encrypt;    });    let encrypt_query = encrypt_list.join('::');//以::双冒号划分

解密时,分段解密并拼接即可