2010-12-03 8 views
2

Ich verwende den Code, den ich here gefunden habe, um mit DES zu verschlüsseln. Ich sende diesen Wert an den Service von Drittanbietern, scheint aber nicht zu funktionieren.Verschlüsseln mit DES und Passwort

Frage im Code angegebenen Code, Salz und Iteration werden als Parameter verwendet, um die Chiffre mit dem Parameter spec erstellen initialisieren:

// Prepare the parameter to the ciphers 
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount); 

// Create the ciphers 
ecipher.init(Cipher.ENCRYPT_MODE, key , paramSpec); 
dcipher.init(Cipher.DECRYPT_MODE, key , paramSpec); 

Wenn ich die Iterationszahlcode ändern, ich unterschiedliche Ergebnisse haben.

Wie kann ich wissen, was auf der anderen Seite des Kabels verwendet wird? Das einzige, was ich von diesem Drittanbieter-Dienst weiß, ist, dass der zu verwendende Algorithmus DES ist und natürlich das geheime Passwort.

Was fehlt mir?

+2

FWIW, DES ist unsicher und sollte nicht in Situationen verwendet werden, in denen Sie erwarten, dass jemand Ihre Verschlüsselungen ernsthaft angreift. Wenn es die sicherste Art ist, mit einem bestimmten Dienst zu kommunizieren, dann hoffen wir, dass Sie für niemanden mit viel Rechenleistung interessant sind. –

+0

@David. Danke für den Kommentar. Yeap, wir sind uns dessen bewusst. Dies wird im LAN verwendet. – OscarRyz

Antwort

2

"DES" selbst ist nur eine einzige Iteration. Sein Nachfolger, "Triple DES" verschlüsselt jeden Datenblock dreimal führt drei Iterationen des Algorithmus durch. Wenn von Ihnen erwartet wird, dass Sie die Verschlüsselung nur mit "DES" durchführen, sollte eine Iteration korrekt sein.

Im Allgemeinen ist es eine schlechte Praxis betrachtet Ihre eigenen Verschlüsselungsfunktionen für etwas anderes als Spielzeug-Implementierungen zu schreiben. Sichere, korrekte Bibliotheken für die Kryptographie zu schreiben, kann manchmal schwierig sein. Erwägen Sie die Verwendung des Java Cryptography Architecture, Teil der Java Platform SE 6.

+0

Was ist mit dem Salz? Was die Funktionen angeht, verwende der Code, auf den ich hingewiesen habe, JCA. – OscarRyz

+0

Triple DES wird technisch nicht dreimal verschlüsselt. Es wendet den DES-Algorithmus dreimal an, um einen Block durch Verschlüsseln, Entschlüsseln und erneutes Verschlüsseln zu verschlüsseln. –

+0

@Joel Was ist mit dem Salz? Was sollen wir verwenden? – OscarRyz

1

Ihr Problem ist, dass Sie den Verschlüsselungsalgorithmus (DES), aber nicht den Schlüsselgenerierungsalgorithmus kennen. Zum Ableiten eines Schlüssels aus einem Passwort gibt es viele Möglichkeiten. Die PBEParameterSpec aus Ihrem Beispiel verwendet den Algorithmus PKCS # 5 zum Ableiten des Schlüssels aus dem Kennwort. Dies ist ein sehr guter Algorithmus für diesen Zweck, aber oft versuchen die Leute, selbst einen einfachen Algorithmus zu entwickeln - z. Hashing nur das Passwort oder einige noch schlimmere Methoden. Es ist nicht einfach zu erkennen, welche Methode verwendet wird. Wenn Sie eine funktionierende App haben, die diesen 3rd-Party-Service verwendet, können Sie versuchen, sie umzubauen, um zu sehen, wie es funktioniert.