这是怎么做的?我尝试在angular上使用CryptoJS并在节点上使用Crypto Module,但没有成功,我一直收到描述错误
角度加密方法:
_rsaEnc(p) {
var e = new JSEncrypt();
const key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/kaskaskKAS';
e.setPublicKey(key);
return e.encrypt(p);
}
节点解密方法
privK = {
key: fs.readFileSync('./app/services/private.pem').toString(),
passphrase: 'xxxxxx'
};
var buf = Buffer.from(base64Data, 'base64');
origData = crypto.privateDecrypt(privK, buf);
return origData.toString('utf-8');
错误:
错误:错误:040A1079:RSA 例程:RSA_padding_check_PKCS1_OAEP_mgf1:oaep解码错误
答案 0 :(得分:0)
最终将angular lib更改为jsencrypt,CryptoJS不支持RSA,并且将node lib更改为node-rsa,以使用以下方式将加密方案设置为pkcs1:
myDecrypter.setOptions({encryptionScheme: 'pkcs1'});