我正在尝试为make soap请求创建一个WS。在邮件正文中有一个包含加密文本的字段。 我有公钥加密文本,但我得到的唯一结果是文本无法识别。 我使用节点的加密模块进行请求和文本被加密,但我不知道为什么不正确加密。Node.js纠正rsa加密的方法?
Ps我做了与openssl_public_encrypt函数和工作的PHP相同的东西。但我必须在node.js中完成它。
任何想法或建议? crypto.publicEncrypt函数有哪些不同的openssl_public_encrypt?
这里是node.js中的加密部分:
var crypto = require("crypto");
var fs = require('fs');
fs.readFile("./certificate.pem", 'utf8', function (err, data) {
var bufferToEncrypt = new Buffer("textToEncrypt");
var encrypted = crypto.publicEncrypt({"key":data, padding:crypto.RSA_NO_PADDING}, bufferToEncrypt).toString("base64");
console.log(encrypted); // length 128
}
在PHP中同样的事情:
<?php
$publicKey = "./certificate.pem";
$plaintext = "textToEncrypt";
openssl_public_encrypt($plaintext, $encrypted, $publicKey);
echo base64_encode($encrypted); //encrypted string length 128
?>
我没有解密文本的私钥,我只有公钥。
另请注意,加密文本(在base64中)的长度在php和node.js中是相同的。
除非您包含您用于加密和解密的实际代码,否则任何人都不可能在这里为您提供帮助,以便我们可以看到您拥有的内容并尝试确定您做错了什么。 – jfriend00
@ jfriend00你是对的!我已经用加密部分的代码更新了帖子 – AngelPoyel