1

NodeJS を使用して DES 暗号化コードを作成しています。

DES アルゴリズムによると、結果は次のようになります。

* http://www.unsw.adfa.edu.au/~lpb/src/DEScalc/DEScalc.html

An example DES test value, taken from
"H. Katzan, The Standard Data Encryption Algorithm, pp75-94, Petrocelli Books Inc., New York, 1977" is:

Key:        5B5A57676A56676E (HEX)
Plaintext:  675A69675E5A6B5A (HEX)
Ciphertext: 974AFFBF86022D1F (HEX)

ただし、私のコードは多少異なる値を出力します。

var assert = require("assert");
var crypto = require("crypto");

var plaintext = new Buffer( '675A69675E5A6B5A', 'hex' ).toString( 'binary' );
var key = new Buffer( '5B5A57676A56676E', 'hex' ).toString( 'binary' );

var cipher = crypto.createCipher( 'des-ecb', key );
var c = cipher.update( plaintext, 'binary', 'hex' );
c += cipher.final( 'hex' );

console.log( c );

上のコードで何を修正すればよいですか?

4

1 に答える 1

5

5B5A57676A56676E はパスワードではなくキーです。

var crypto = require("crypto");
var plaintext = new Buffer( '675A69675E5A6B5A', 'hex' ).toString( 'binary' );
console.log("plian:"+plaintext);
var key = new Buffer( '5B5A57676A56676E', 'hex' );
var iv = new Buffer(8);
iv.fill(0);
var cipher = crypto.createCipheriv("des", key, iv);
cipher.setAutoPadding(false);
var c = cipher.update( plaintext, 'binary', 'hex' );
c+=cipher.final('hex' );
console.log(c);
于 2012-08-23T12:15:05.163 に答える