我正在嘗試爲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