2016-03-23 3 views
1

Wenn wir einen codierten Text mit 3Des mit 64-Bit-Kodierung haben, ist es genug, um den Chiffrierschlüssel zu haben? Was wir sonst noch brauchen.Dekodieren von 3Des mit 64bit kodiertem Text

Ich habe versucht und im unter Fehler zu treffen.

javax.crypto.BadPaddingException: Gegeben letzten Block nicht richtig gepolstert

+0

Entschuldigung, ich bezog mich auf den ursprünglichen Text von verschlüsseltem Code zurück. Zur Zeit habe ich den verschlüsselten Code und den Schlüssel. Als Info gaben sie mir, dass sie '3Des mit 64bit-Codierung' verwendeten – Cooray

+0

Vermutlich meinst du verschlüsselt, 3DES (Triple-DES) und einen 64-Bit-Schlüssel, den weder DES noch 3DES hat. – zaph

+0

seine BASE64-Codierung mit TripleDES @zaph – Cooray

Antwort

1
  1. DES, 3DES und AES sind unter anderem Block Chiffren was bedeutet, dass sie Eingangsdaten haben müssen, die ein Vielfaches der Blockgröße (8 -Bytes in DES). Entweder stellen Sie sicher, dass die Daten immer ein Vielfaches von blocksize sind oder Padding verwenden, PKCS # 5, um Füllbytes hinzuzufügen und zu entfernen, um die Anforderung für mehrere Blöcke zu erfüllen.
  2. Verwenden Sie nicht 3DES, es wurde von AES ersetzt, ist nicht ausreichend sicher für neue Arbeit.
  3. 3DES ist ein 168-Bit-Schlüssel (24-Byte), manchmal wird zur Kompatibilität ein 112-Bit-Schlüssel (16-Byte) verwendet. Anfangs wurden die Bytes mit nur 7 Bits für Daten in jedem Byte paritätsüberprüft, die Paritätsprüfung wird im allgemeinen nicht mehr durchgeführt, aber immer noch werden nur die unteren 7 Bits pro Byte verwendet.
  4. Es ist immer am besten, einen Schlüssel der genauen Größe zu liefern.
  5. Sie sollten AES im CBC-Modus mit einer zufälligen IV verwenden.
  6. Wenn Sie einen Zeichenfolgenschlüssel verwenden (möglicherweise vom Benutzer bereitgestellt), sollten Sie den richtigen Schlüssel mithilfe von PBKDF2 ableiten.
  7. Eine Nachricht Authentifizierung MAC ist auch eine gute Idee.
+0

Hallo Zaph, Vielen Dank für die Antwort. Das sind einige alte Daten, die ich entschlüsseln und für meine App verwenden muss. Also habe ich keine Optionen es zu ändern :) Ja, ich habe etwas über diese Technologie gelesen. Aber mit einem Fehler beim Entschlüsseln konfrontiert. Hast du eine Ahnung davon? Exception in thread "main" javax.crypto.BadPaddingException: letzter Block gegeben gepolstert nicht richtig bei com.sun.crypto.provider.SunJCE_f.b (DashoA13 * ..) bei com.sun.crypto.provider. SunJCE_f.b (DashoA13 * ..) – Cooray

+0

Hinweis 1 in der Antwort. Sie müssen genau wissen, wie die Daten verschlüsselt wurden. Aber da Sicherheit kein Problem ist, sollten Sie sie einfach entschlüsseln, genauso wie der Brückenkonstrukteur fehlerhafte Designmethoden verwendet. – zaph

+0

Die angegebene Information ist 'verschlüsselt mit 3Des + 64bit Kodierung' und der verwendete Schlüssel. :) Im fehlende Padding-Mechanismus sie verwendet? – Cooray

Verwandte Themen