0

crypto モジュールを使用して 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== です ここで何が間違っているのかよくわかりません。どんな助けでも本当に感謝しています。

4

1 に答える 1

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);
于 2013-04-26T06:06:00.340 に答える