Warum base64 ein sha1 / sha256 Hash?

7

kann mir jemand sagen, warum amazon eine base64 des hmac-sha1 / sha256 hash wollen?

Ссылка

Ich weiß, dass base64 das binäre Datum in ascii darstellen soll, aber sha1 / sha256 ist bereits ascii - ich meine es ist nur hex.

Danke

Timo

    
tuna 11.03.2012, 23:45
quelle

2 Antworten

16

Diese Hashes sind nicht ASCII - der Grund, warum Hexadezimalziffern angezeigt werden, liegt darin, dass die Software, mit der Sie sie generieren, die binäre Ausgabe des Digests übernimmt und sie in eine ASCII-Zeichenkette verwandelt.

Zum Beispiel füllt der MD5-Digest ein Array von 16 Bytes. Sie können es auch als eine Folge von 32 Zeichen darstellen, aber die einfachste Form des Digests ist immer noch das Array von Bytes.

Wenn Sie ein Array von Bytes in eine hexadezimale Zeichenfolge ändern, benötigen Sie 8 Bits (ein vollständiges Zeichen), um alle 4 Datenbits darzustellen. Obwohl es nicht oft so heißt, könnte man sagen, dass dies die Codierung "base16" verwendet, da Sie jeweils 4 Bits gleichzeitig lesen und sie auf ein 16-stelliges Alphabet abbilden.

Base64 dagegen nimmt 6 Bits gleichzeitig und bildet sie auf ein 64-stelliges Alphabet ab. Dies bedeutet, dass Sie 8 Bits (wiederum ein vollständiges Zeichen) benötigen, um alle 6 Datenbits darzustellen, was die Hälfte der verlorenen Bits von base16 aufweist. Eine Base16-codierte Zeichenfolge ist immer doppelt so groß wie das Original. Eine base64-codierte Zeichenfolge ist nur zu vier Dritteln so groß. Für einen SHA256-Hash verwendet base16 64 Bytes, aber base64 tut ungefähr 43.

    
zneak 11.03.2012, 23:48
quelle
4

Zum Beispiel codieren die Bytes-, hex- und base64-Beispiele die gleichen Bytes:

  • Bytes: 243 48 133 140 73 157 28 136 11 29 189 101 194 101 116 64 172 227 220 78
  • hex: f330858c499d1c880b1dbd65c2657440ace3dc4e
  • base64: 8zCFjEmdHIgLHb1lwmV0QKzj3E4= .

AWS verlangt nur, dass seine Werte base64-codiert sind.

    
Dan D. 12.03.2012 00:01
quelle