2017-09-27 5 views
1

Ich versuche, die Ausgabe des folgenden Python-Code in R zu replizieren:R Äquivalent hashlib.sha256 Funktion des Python

import hashlib 

x = hashlib.sha256() 
x.update("asdf".encode("utf8")) 
print(x.digest()) 
# b'\xf0\xe4\xc2\xf7lX\x91n\xc2X\xf2F\x85\x1b\xea\t\x1d\x14\xd4$z/\xc3\xe1\x86\x94F\x1b\x18\x16\xe1;' 

Das ist mein R-Code ist:

library(digest) 
digest("asdf", algo="sha256", serialize=FALSE) 
# "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b" 

Ich bin in der Lage, die gleiche Ausgabe in Python mit x.hexdigest() anstelle von x.digest() zu bekommen. Wie bekomme ich die Ausgabe von x.digest() in meinem R-Code?

Antwort

2

Die Python-Ausgabe ist die Rohbytes des Digests. Die Funktion R digest unterstützt dies auch mit dem Argument raw.

digest("asdf", algo="sha256", serialize=FALSE, raw=TRUE) 
+0

Ich hätte erwähnen sollen, dass ich das schon probiert habe. Dies ist der Ausgang, den ich bekomme: 'f0 e4 c2 f7 6c 58 91 6e c2 58 f2 46 85 1b ea 09 1d 14 d4 24 7a 2f c3 e1 86 94 46 1b 18 16 e1 3b' – ytk

+2

Der Unterschied ist, wie R und Python drucken Byte-Strings - sie repräsentieren den gleichen Code. –

Verwandte Themen