我正在构建一个node.js应用程序,需要将一些加密数据发送到服务器。这些数据必须使用给定的公钥(.pem格式)加密。使用下面的java代码,我能够成功加密数据,但是当在node.js上使用类似的代码时,加密数据被服务器视为无效。我也尝试使用node-rsa,但没有太多运气:
有人遇到过这种问题吗?
先谢了!
Java代码示例:
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
cipher.init(Cipher.ENCRYPT_MODE, publicKeys);
byte[] encryptedText = cipher.doFinal(textToEncrypt.getBytes());
String encryptedTextFinal = Base64.encodeBase64String(encryptedText);
return encryptedTextFinal;
Same code on Node.js:
function encryptWithPubKey(dataToEncrypt) {
const absolutePath = path.resolve(publicKeyPath)
const pubKey = fs.readFileSync(absolutePath, 'utf8')
const buffer = Buffer.from(dataToEncrypt, 'base64')
const encrypted = crypto.publicEncrypt({key: pubKey, padding: crypto.constants.RSA_PKCS1_PADDING}, buffer)
return encrypted.toString('base64')
}
1条答案
按热度按时间bpzcxfmw1#
解决您的问题:
更简单的代码:创建一个没有填充的密码。不要在生产环境中使用。
在NodeJs中你可以使用解密而不用填充。