2013-04-25 134 views
0

我想使用加密模塊在node.js中實現加密。下面是我的代碼片段:Node.js加密模塊

var SECRET_KEY = "RANDOMKEY"; 
var crypto = require("crypto"); 
var MD5 = crypto.createHash("MD5"); 
MD5.update(SECRET_KEY, 'ucs2'); 
var hash = MD5.digest('binary'); 


var key = new Buffer(hash, 'binary'); 
var keyStart = new Buffer(8, 'binary'); 
key.copy(keyStart, 0, 0, 8); 


var valueToEncrypt = new Buffer('password', 'utf-8').toString('binary'); 
var cipher = crypto.createCipheriv('des-cbc',keyStart, keyStart); 
var cryptedPassword = cipher.update(valueToEncrypt, 'binary', 'base64'); 

cryptedPassword+= cipher.final('base64'); 

console.log(cryptedPassword);gives---> r4xhQ8T87z2FFkLOxkcnGg== 

我應該回去了是r4xhQ8T87z26w30I1vr9kA == 我真的不知道我在做什麼錯在這裏。任何幫助真的很感激。

+0

您是如何產生期望值的?你爲什麼只散列密鑰的前8個字節? – loganfsmyth 2013-04-26 00:52:11

回答

1

事實證明,它的加密是正確的,你的期望值只包括密碼後的"\r\n",這個例子代碼沒有提供。

"r4xhQ8T87z2FFkLOxkcnGg=="解密爲"password",但是"r4xhQ8T87z26w30I1vr9kA=="解密爲"password\r\n"

因爲這樣,你對編碼有點瘋狂了。將所有內容保存爲Buffer更簡單。

var SECRET_KEY = "RANDOMKEY"; 
var crypto = require("crypto"); 

var MD5 = crypto.createHash("MD5"); 
MD5.update(SECRET_KEY, 'ucs2'); 
var keyStart = MD5.digest().slice(0, 8); 

var valueToEncrypt = 'password\r\n'; 
var cipher = crypto.createCipheriv('des-cbc', keyStart, keyStart); 
var cryptedPassword = cipher.update(valueToEncrypt, 'utf8', 'base64') + 
    cipher.final('base64'); 

console.log(cryptedPassword); 
+0

非常感謝。此作品! :-)我仍然試圖去編碼。 – nimgrg 2013-04-26 06:13:18