2016-06-24 12 views
-1

私は実際にこれについていくつかの説明を使用することができました。私は暗号を使って16進数で何かを暗号化しています。 16進数の出力はRubyが私に同じアルゴリズム(sha-256-ecb)で与えるものとは異なります。ルビーから暗号化やその他の暗号化ライブラリからの16進数出力の違いは?

例:ノードから\x15\x16\x02F\xD8\xFFwE\x91 (...)

例:e67b2c88dd0cedeb29f2e02df98d48eb2f2e3470bf99b (...)

これらのフォーマットの違いは何ですか?

+0

あなたのコードに問題がある場合は、[最小、完全、および検証可能な例]を提供する必要がありますhttp://stackoverflow.com/help/mcve)を参照してください。推測に時間を無駄にせずにお手伝いします。 –

答えて

2

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進数表記に変換する簡単でネイティブな解決法を認識していません

関連する問題