Generieren Sie einen Schlüssel für AES
Fand ich dies im internet: http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html
Im Grunde, was ich will zu tun ist, anstatt die set-Taste wie
new byte[] { 'T', 'h', 'e', 'B', 'e', 's', 't',
'S', 'e', 'c', 'r','e', 't', 'K', 'e', 'y' };
Will ich es zufällig sein(muss aber 16 bytes), und den Zugriff darauf zu(drucken Sie es auf dem Bildschirm). Auch gibt es einen Weg, um es als string, statt der byte-Typ?
- Können Sie ein byte-array aus einem String: "TheBestSecretKey".getBytes("UTF-8");Sie können eine zufällige Zeichenfolge generiert Sequenz und Holen Sie sich die bytes auf die gleiche Weise. Überprüfen Sie heraus die Antwort stackoverflow.com/questions/41107/...
- Ich möchte den string aus dem byte-Reihenfolge, nicht byte für byte von string. Was ich will, ist tatsächlich die Eingabe des Benutzers den Schlüssel anstatt dass es ein IV(Initialisierungsvektor).
- Das ist ein schreckliches Beispiel. Wird es mit der EZB, und es verwirrt Kennwörter mit Schlüsseln. Nicht noch viel schlimmer, in so wenigen Zeilen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen starken AES-Schlüssel werden 16, 24 oder 32 bytes lange. Wenn Sie beschränken Sie die Taste, um bytes, die Karte zu druckbaren US-ASCII-Zeichen, der Schlüssel wird schwächer sein als erwartet, denn die Reichweite ist begrenzt (auf etwa 100 bits, statt 128—viele Millionen mal schwächer). Es wäre besser, verwenden eine Codierung wie hexadezimal, base64-oder base-85-stellen Sie den Schlüssel als text; natürlich, diese Darstellungen werden mehr.
Erstellen Sie eine secure key, verwenden Sie einen
KeyGenerator
basiert auf einem korrekt gesetzten cryptographic random number generator; Anbietern wählen, Ihre eigenen RNG wenn Sie nicht angeben:Wenn Sie möchten, können Sie instanziieren Sie Ihre eigenen
SecureRandom
Instanz, mit Ihrem bevorzugten Algorithmus und Anbieter, und übergeben Sie die Schlüssel-generator über eine überlastung derinit()
Methode.Gibt es schlüsselableitung Methoden, die versuchen zu mildern die Schwächen von Passwort-Schlüsseln, aber eine Passwort-basierte key wird immer mehr vorhersehbar.
Gut, weil, dass ist schrecklich und unsicher. Es ist das Schlimmste, geheimen Schlüssel. Passwörter sind nicht die Schlüssel und sollte nicht als solche verwendet werden.
Du willst es sicher Zufall:
Siehe oben.
Gut, ja, Sie können entschlüsseln der oben genannten hexadezimalen string. Aber am Ende wird der AES-Algorithmus erfordert ein binärer Schlüssel, der binäre Klartext und generiert die binäre Ausgabe. Die
SecretKey
Klasse ist wenig mehr als ein wrapper um die byte-array.Mehr zu tun Konvertierungen in und aus strings, erfahren Sie mehr über character-encoding und encoding...