2014-01-08 51 views
0

只使用Node.js的我要實現以下目標:如何在node.js中創建公鑰和私鑰來簽署數據?

  • 創建一個強大的隨機公鑰/私鑰是人類可讀。

  • 有一個字符串數據和私鑰的base64

  • 創建簽名以一個字符串數據,公鑰和簽名,並確認該簽名是由私鑰的所有者創建。

到目前爲止,我有以下幾點:

var crypto = require('crypto'); 
var message = "This is a string I want to ensure is not tampered with."; 
var sign = crypto.createSign("RSA-SHA256"); 
sign.update(message); 
var signature = sign.sign("thisiswhereiassumetheprivatekeywillgo", "base64"); 

console.log(message); 
console.log(signature); 

但控制檯輸出只顯示消息,簽名返回空。

任何幫助將不勝感激。

回答

1

所有現代密碼都使用二進制數據,通常用字節表示。許多腳本語言在字節和字符之間執行一些魔術轉換,但問題是字節數​​組通常不僅包含可打印字符。

要將字節轉換爲人類可讀形式,您需要應用某種形式的。出於調試的目的,最好轉換爲十六進制(基本16編碼)。出於效率原因,您也可以使用base 64編碼。這兩種編碼都由RFC4648指定。