Frage

Ich verwende HMACSHA512 auf Hash-Daten einen gemeinsamen Schlüssel verwenden. Da der Schlüssel geteilt Ich möchte für sie alle druckbaren Zeichen für Transport Leichtigkeit sein. Ich frage mich, was der beste Ansatz ist, diese Schlüssel zu erzeugen.

Ich bin derzeit das GetBytes () -Methode von RNGCryptoServiceProvider einen Schlüssel zu erzeugen, aber der Byte-Array es gibt enthält nicht druckbare Zeichen. Also ich frage mich, ob es sicher ist zu base64 das Ergebnis kodieren oder dass die Zufälligkeit zu viel und machen Dinge viel weniger sicher erodiert? Wenn das nicht ein guter Ansatz ist, kann Sie deshalb ein?

ich das verstehen, indem die Schlüssel zu druckbare Zeichen zu begrenzen ich die gesamte Breite des Schlüsselraumes an Begrenzung (dh: aus 1 der 8 Bits lopping), aber ich bin OK mit, dass

.
War es hilfreich?

Lösung

Wenn Sie nicht verarbeiten kann auto-Erzeugung der Schlüssel dann http://www.grc.com/passwords ist eine gute Quelle für sehr zufällig Schlüsselmaterial.

Base64 würde die zugrunde liegende Entropie des Byte-Arrays nicht reduzieren. Sie könnten den Schlüssel und verwenden Sie es in seiner rohen Form erzeugen, aber Base64 kodieren sie es zu transportieren, wo Sie es brauchen. Sie würden dann Base64 dekodieren es in die Rohform zurück, bevor Sie sie in der neuen Position verwenden. Es gibt keinen Verlust der Entropie in dieser Operation. Die Base64-Kodierung reduziert die Entropie zu 6-Bit pro Byte anstelle von 8, aber das Ergebnis der Codierung ist länger, so insgesamt die Entropie gleich ist.

Der andere Weg Sie wäre es tun könnte 24 zufällige Bytes für 192-Bit-Wert von Entropie zu erhalten. Base64 codiert, das Ihnen eine 32 Zeichenfolge geben würde (256-Bit), die immer noch die ursprüngliche Zufälligkeit und 192-Bit Entropie hat. Sie könnten direkt dies als Shared-Key verwenden.

Andere Tipps

BASE64 wandelt eine Byte-Reihenfolge, so dass es nur bestimmte druckbare Zeichen verwendet.

Diese Transformation, die Informationen nicht in irgendeiner Art und Weise ändern, nur wie sie gespeichert wird. Es ist auch reversibel. Sie die ursprüngliche Byte-Sequenz erhalten können durch Dekodieren der BASE64 Ausgabe

So BASE64 mit nicht „die Zufälligkeit erodieren“ oder den Schlüsselraum in keiner Weise einschränken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top