2012-05-12 51 views
3

我正嘗試使用crypto模塊爲node.js(0.6.15)生成數字簽名。下面的代碼不會打印任何東西(在Windows和Linux機器上)並且res的長度爲0.此外,無論輸入什麼虛擬輸入作爲關鍵字,signer都不會拋出異常。 openssl安裝在版本1.0.1中。我究竟做錯了什麼?node.js數字簽名不起作用

var crypto = require('crypto'); 
var signer = crypto.createSign("RSA-SHA1") 
signer.update("sign me!") 

//dummy key 
var private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL4vpoH3H3byehjj" + 
    "7RAGxefGRATiq4mXtzc9Q91W7uT0DTaFEbjzVch9aGsNjmLs4QHsoZbuoUmi0st4" + 
    "x5z9SQpTAKC/dW8muzacT3E7dJJYh03MAO6RiH4LG34VRTq1SQN6qDt2rCK85eG4" + 
    "5NHI4jceptZNu6Zot1zyO5/PYuFpAgMBAAECgYAhspeyF3M/xB7WIixy1oBiXMLY" + 
    "isESFAumgfhwU2LotkVRD6rgNl1QtMe3kCNWa9pCWQcYkxeI0IzA+JmFu2shVvoR" + 
    "oL7eV4VCe1Af33z24E46+cY5grxNhHt/LyCnZKcitvCcrzXExUc5n6KngX0mMKgk" + 
    "W7skZDwsnKzhyUV8wQJBAN2bQMeASQVOqdfqBdFgC/NPnKY2cuDi6h659QN1l+kg" + 
    "X3ywdZ7KKftJo1G9l45SN9YpkyEd9zEO6PMFaufJvZUCQQDbtAWxk0i8BT3UTNWC" + 
    "T/9bUQROPcGZagwwnRFByX7gpmfkf1ImIvbWVXSpX68/IjbjSkTw1nj/Yj1NwFZ0" + 
    "nxeFAkEAzPhRpXVBlPgaXkvlz7AfvY+wW4hXHyyi0YK8XdPBi25XA5SPZiylQfjt" + 
    "Z6iN6qSfYqYXoPT/c0/QJR+orvVJNQJBANhRPNXljVTK2GDCseoXd/ZiI5ohxg+W" + 
    "UaA/1fDvQsRQM7TQA4NXI7BO/YmSk4rW1jIeOxjiIspY4MFAIh+7UL0CQFL6zTg6" + 
    "wfeMlEZzvgqwCGoLuvTnqtvyg45z7pfcrg2cHdgCXIy9kErcjwGiu6BOevEA1qTW" + 
    "Rk+bv0tknWvcz/s=" 

var res = signer.sign(private_key, output_format='base64') 
console.log(res); 

回答

1

由於本Noordhuis告訴我here上面使用的關鍵不正確的格式。最好從磁盤加載pem格式。