我正在使用NodeJS加密模块在后端使用RSA进行加密和解密,而在JSencrypt进行前端RSA加密
但是问题是,每当我使用publickey在前端加密时,后端都会引发此错误(PS:我在NuxtJS中使用此功能,因此使用了导入功能。)
const { JSEncrypt } = await import('jsencrypt')
const rsa = new JSEncrypt({ default_key_size: 1024 })
rsa.setPublicKey(store.state.publicKey)
const xKey = rsa.encrypt(store.state.ticket)
然后每当我尝试在后端使用这段代码进行解码时,都会抛出此错误
Error: error:04099079:rsa routines:RSA_padding_check_PKCS1_OAEP_mgf1:oaep decoding error
这是我使用privateKey进行RSA解码的后端代码
const privateKey = fs.readFileSync('RSA_private.key', { encoding: 'utf8' })
exports.RSAdecrypt = async (data) => {
const buffer = Buffer.from(data, "base64")
const decrypted = crypto.privateDecrypt(privateKey, buffer)
return decrypted.toString('utf8')
}
我找到了解决方案。我在这篇文章中看到默认情况下JSencrypt
使用pkcs1
填充。所以我默认情况下pkcs1
使用pkcs1_oaep
默认节点加密使用了我的解密器。
这是解密器的代码。
exports.RSAdecrypt = async (data) => {
const buffer = Buffer.from(data, "base64")
const decrypted = crypto.privateDecrypt({ key: privateKey, padding: crypto.constants.RSA_PKCS1_PADDING }, buffer)
return decrypted.toString('utf8')
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句