2016-05-17 56 views
0

我試圖做的功能相當於php seal。 我有一個字符串來加密,一個公鑰和一個隨機生成的密鑰,我必須使用'rs4'算法對字符串進行編碼。使用公共證書加密節點

到目前爲止,我設法與加密功能串編碼:

var password = crypto.randomBytes(128); 
var cipher = crypto.createCipher('rc4', password); 
var crypted = cipher.update(text,'utf8','base64'); 
crypted += cipher.final('base64'); 

但不知何故,我需要在加密包括公共X509證書。

有人能指出我正確的方向嗎?

+0

您是否只使用一個公鑰?如果是這樣,試圖複製PHP的密封函數並不是您想要的。您正在尋找簡單的[公鑰加密](https://www.google.com/search ?q = node.js + public + key + encryption)如果你確實有多個公鑰,你在問題中鏈接到的手冊頁告訴你到底發生了什麼,如果你在node.js中找不到函數那就是,你可以隨時寫自己的。 – Mike

+0

是的,我只有一個公鑰,我會按照你的建議去嘗試node ursa。Thx! – Petru

回答

0

最後我沒有找到任何在節點中實現相同加密的方法,所以我只是從發送要加密數據的節點調用一個php cli腳本,然後讀取加密base64結果的stdout: (

0

RC4不是公鑰加密系統。你要找的(按優先順序排列):

  • 節點鈉
  • RSAES-OAEP與MGF1 + SHA256和e = 65537

而且,密鑰加密,唐不使用RC4。

+0

根據opensssl_seal的php文檔,它是一個公鑰和隨機私鑰方法。爲了描述數據,需要兩個密鑰+公鑰的私鑰。 (類似diffie hellman?) – Petru

+0

https://paragonie.com/white-paper/2015-secure-php-data-encryption#crypto-seal –