web-dev-qa-db-ja.com

NodeJS CryptoでのSHA-256の使用

私はNodeJSで変数をハッシュしようとしています:

var crypto = require('crypto');

var hash = crypto.createHash('sha256');

var code = 'bacon';

code = hash.update(code);
code = hash.digest(code);

console.log(code);

しかし、console.logはハッシュ化されたバージョンのベーコンをログに記録せず、SlowBufferに関するいくつかの情報のみを記録するため、ドキュメントを誤解しているようです。

これを行う正しい方法は何ですか?

31
Cameron

base64:var hash = crypto.createHash('sha256').update(pwd).digest('base64');

16進数:crypto.createHash('sha256').update('password').digest('hex');

15
MaximeF

上記の回答に似ていますが、これは複数の書き込みを行う方法を示しています。たとえば、ファイルから1行ずつ読み取り、各行を個別の操作としてハッシュ計算に追加する場合などです。

私の例では、改行も削除します/空の行をスキップします(オプション):

const {createHash} = require('crypto');

// lines: array of strings
function computeSHA256(lines) {
  const hash = createHash('sha256');
  for (let i = 0; i < lines.length; i++) {
    const line = lines[i].trim(); // remove leading/trailing whitespace
    if (line === '') continue; // skip empty lines
    hash.write(line); // write a single line to the buffer
  }

  return hash.digest('base64'); // returns hash as string
}

このコードを使用して、ファイルの生成された行が誰かによって手動で編集されないようにします。これを行うには、行を書き、sha256:<hash>のような行にsha265-sumを追加します。次に、次の実行時に、これらの行のハッシュが前述のsha265-sumと一致することを確認します。

1
Blaskovicz

nodejs(8)ref

const crypto = require('crypto');
const hash = crypto.createHash('sha256');

hash.on('readable', () => {
    const data = hash.read();
    if (data) {
        console.log(data.toString('hex'));
        // Prints:
        //  6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
    }
});

hash.write('some data to hash');
hash.end();
0
Mohamed.Abdo