Ich habe die SecretKey
während einer Verschlüsselungsoperation gespeichert, die ich später verwenden muss. Während Speicherung ich es in Zeichenfolge bin Umwandlung:Die Klasse com.google.gson.Gson schlägt mit javax.crypto.SecretKey fehl?
String keyAsString = new Gson().toJson(key);
Aber während retriving versagt es für folgenden Code:
SecretKey secKey = new Gson().fromJson(keyAsString, SecretKey.class);
Auch ich bin keinen einzigen Hinweis in LogCat sogar mit Verbose-Messaging-Filter bekommen. Ich habe versucht, den Code in Try-Catch-Umgebung wie unten mit Debug-Punkte (In der Hoffnung, kann ich jede Ausnahme Spur bekommen während des Debuggens):
try {
SecretKey secKey = new Gson().fromJson(keyAsString, SecretKey.class); // One debug point here
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e)); // And one debug point here
}
Aber Debugger stoppen nicht an den beiden Debug-Punkte, sofort auf dem Gerät App stürzt ab und zeigt leider eine Anwendung abgestürzt Nachricht.
Die json Struktur für SecretKey
sparen ist wie folgt:
{
"algorithm": "AES",
"key": [
integer1, integre2, ....
]
}
Hinweis: integer1, integer2 ... sind die tatsächlichen Zahlen für die Sicherheit Zweck Ich bin nicht die ursprünglichen Ergebniszahlen veröffentlichen.
Was haben schief gegangen? Ist eine solche Speicherung von SecretKey
nicht erlaubt?
aktualisieren
Converting SecretKey zu JSON-String & vice versa mit Gson schlechte Idee war, wie durch jonathanrz beantwortet unter ich seine Antwort & schrieb zwei in Android-Utility-Funktionen gefolgt SecretKey zu String & umgekehrt Funktionen sind zu konvertieren folgt als:
public static String secretKeyToString(SecretKey key) {
return Base64.encodeToString(key.getEncoded(), Base64.DEFAULT);
}
public static SecretKey encodedStringToSecretKey(String encodedKey) {
byte[] decodedKey = Base64.decode(encodedKey, Base64.DEFAULT);
return new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES");
}
Können Sie ein Beispiel für einen JSON posten, den Sie analysieren möchten? – jonathanrz
@jonathanrz bitte Blick auf die editierte Frage – pcj