【发布时间】:2016-01-29 03:30:45
【问题描述】:
我正在尝试创建一个用于制作肥皂请求的 WS。在邮件正文中有一个包含加密文本的字段。 我有加密文本的公钥,但我得到的唯一结果是文本无法识别。 我使用节点的加密模块发出请求,文本被加密,但我不知道为什么没有正确加密。
Ps 我用 openssl_public_encrypt 函数在 php 上做了同样的事情并且可以工作。但我必须在 node.js 中完成。
有什么想法或建议吗? openssl_public_encrypt 与 crypto.publicEncrypt 函数有什么不同?
这是 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 你是对的!我已经用加密部分的代码更新了帖子
标签: php node.js rsa encryption-asymmetric