Rubyの.digest
メソッドは、16進形式で表されたバイナリ符号化文字列を返します。あなたの代わりに進エンコードされた文字列を取得するにはルビーで.hexdigest
方法を使用した場合 、あなたはNodeJSと同じ結果を得るだろう:
ルビー:
require 'digest';
sha256 = Digest::SHA256.new
sha256.hexdigest 'message'
// "ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d"
NodeJS:
const crypto = require('crypto');
var hash = crypto.createHash('sha256');
hash.update('message');
hash.digest('hex');
// "ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d"
NodeJSもバイナリとしてエンコードできます:
const crypto = require('crypto');
var hash = crypto.createHash('sha256');
hash.update('message');
hash.digest('binary');
// Buffer returned
しかし、私はバッファをRubyスタイルの\xXXXX
16進数表記に変換する簡単でネイティブな解決法を認識していません
あなたのコードに問題がある場合は、[最小、完全、および検証可能な例]を提供する必要がありますhttp://stackoverflow.com/help/mcve)を参照してください。推測に時間を無駄にせずにお手伝いします。 –