2014-10-30 6 views
5

Ich entwickle eine Java-Kryptographie-Anwendung. Ich möchte eine Datei mit symmetrischen Algorithmen wie AES oder DES verschlüsseln und den secretKey in einer Datenbank für die zukünftige Entschlüsselung der Datei speichern. Ich frage mich, wie man das SecretKey-Objekt in einer Datenbanktabelle speichert. Soll ich das Schlüsselobjekt serialisieren? (secretKey ist serilisierbar.) Wie wird serialisiertes Objekt in der Datenbank gespeichert? Welchen MYSQL-Datentyp sollte ich verwenden?Wie man geheimen Schlüssel in Java verwaltet

Eine andere Lösung besteht darin, das rohe Byte [] des Schlüssels zu erhalten, in base64 zu konvertieren und in der Datenbank zu speichern. Ich kann später den base64-Schlüssel zum ursprünglichen Raw-Schlüssel dekodieren, aber das Problem besteht darin, den rohen Schlüssel in SecretKey-Objekt umzuwandeln.

Jede Hilfe würde sehr geschätzt werden.

+1

Sie müssen 'blob' zum Speichern von Objekten und Objekt verwenden, müssen vor dem Speichern in DB serialisiert werden. Sehen Sie dies für weitere Informationen. http://stackoverflow.com/questions/2747203/want-to-store-object-in-mysql-database – Ali786

+0

Was wird der Datentyp des geheimen Schlüssels –

+0

Verwenden Sie String-Objekt zum Speichern geheimer Schlüssel. – Ali786

Antwort

3

Es gibt eine Klasse in Java - 'Key Generator' - Diese Klasse bietet die Funktionalität des geheimen (symmetrischen) Schlüsselgenerators.

Sie müssen im Grunde diese Klasse für geheime Schlüssel Generation zu verwenden, in einer Art und Weise folgenden:

SecretKey aesKey = KeyGenerator.getInstance("AES").generateKey(); 

Dieser geheimen Schlüssel mit Standardlänge für den Algorithmus erzeugt wird, die als Parameter übergeben wird, ist es in diesem Beispiel erzeugt einen geheimen Schlüssel für 128 Bits (Standard für AES).

Oder verwenden Sie die folgende Funktion:

public static SecretKey generateSecretKey() 
{ 
    KeyGenerator keyGener = KeyGenerator.getInstance("AES"); 
    keyGener.init(256) // here you can pass any valid length 
    return keyGener.generateKey(); 
} 

Sie können diese erzeugten geheimen Schlüssel zum Zeichen-Array, Byte-Array oder String konvertieren und dann können diese mit einer beliebigen Datenbank gespeichert werden, verwenden Sie folgendes:

char[] key = encodeHex(aesKey.getEncoded()); 

oder

byte[] key = aesKey.getEncoded(); 

Für weitere Einzelheiten der KeyGenerator-Klasse: http://docs.oracle.com/javase/7/docs/api/javax/crypto/KeyGenerator.html

Gerne helfen.

Danke, Ankit

+0

Hallo Lokesh, wenn die Antwort nützlich ist, dann benutze den Pfeil nach oben, um es zu voten, andernfalls, wenn dein Problem noch nicht gelöst ist, dann lass es mich wissen. – LearnAndHelp