2016-06-24 8 views
-1

Ich könnte wirklich eine Erklärung auf diesem einen verwenden. Ich benutze Crypto, um etwas im Hex zu verschlüsseln. Die Hex-Ausgabe unterscheidet sich von dem, was Ruby mir für den gleichen Algorithmus geben würde (sha-256-ecb).Unterschied in der Hexadezimalausgabe von Krypto- und anderen Verschlüsselungsbibliotheken?

Beispiel von Ruby: \x15\x16\x02F\xD8\xFFwE\x91 (...)

Beispiel von Knoten: e67b2c88dd0cedeb29f2e02df98d48eb2f2e3470bf99b (...)

Was ist der Unterschied in diesen Formaten?

+0

Wenn Sie ein Problem mit Ihrem Code haben, sollten Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve), die Ihr Problem zeigt. Hilf uns, dir zu helfen, ohne Zeit mit Raten zu verschwenden. –

Antwort

2

Rubys .digest-Methode gibt eine binär codierte Zeichenfolge in Hexadezimalform zurück. Wenn Sie die .hexdigest Methode in Ruby verwenden stattdessen eine Hex-codierte Zeichenfolge zu erhalten, würden Sie die gleichen Ergebnisse wie in NodeJS erhalten:

Rubin:

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 kann auch als binär codieren:

const crypto = require('crypto'); 

var hash = crypto.createHash('sha256'); 
hash.update('message'); 
hash.digest('binary'); 
// Buffer returned 

Aber mir ist keine einfache native Lösung bekannt, den Puffer in eine Ruby-artige \xXXXX hex-Darstellung zu konvertieren