2009-08-16 6 views
10

Ich benutze Passwort-basierte Verschlüsselung. Mein erster Gedanke war, AES zu verwenden, um die Datei zu verschlüsseln, die Kennwörter enthält. Stellt sich heraus, dass die kennwortbasierte Verschlüsselung AES nicht unterstützt. Es verwendet DES. AFAIK des ist nicht sicher. Ist PBEWithMD5AndDES sicher genug, um meine Daten zu übertragen, oder sollte ich nach einer anderen Implementierung suchen?Java PBEWithMD5AndDES

+1

Es scheint, dass Sie einige Ausdrücke in einer verwirrenden Weise verwenden. "Kennwortbasierte Verschlüsselung" bezieht sich auf ein Schema, bei dem Dateien mit einem Schlüssel verschlüsselt werden, der von einem Passowrd abgeleitet ist. (Zum Beispiel ist der PKCS # 5-Standard ein Passwort-basiertes Verschlüsselungsschema). Was Sie wollen, ist etwas anderes, d. H. Ein sicheres Passwortspeicher-/Verwaltungsschema. Daher ist PBEWithMD5AndDES nicht das, was Sie brauchen, egal wie sicher oder unsicher es ist. – Accipitridae

+0

Dies ist nun eine völlig veraltete Frage, AES wird seit Java 6 für die passwortbasierte Verschlüsselung unterstützt, obwohl ich erwähnen sollte, dass es nur für * In-Place-Verschlüsselung * verwendet werden sollte, da es keinen Integritätsschutz gibt. –

Antwort

16

Aus Ihren Kommentaren geht hervor, dass Sie eine Datei, die vertrauliche Informationen enthält, mithilfe eines kennwortbasierten Verschlüsselungsschemas mit einem vom Benutzer zur Entschlüsselungszeit bereitgestellten Kennwort verschlüsseln. Die sensiblen Informationen sind in diesem Fall auch Passwörter, aber das ist nicht wirklich relevant. (Sie sollten die Frage wahrscheinlich aktualisieren, um dies deutlicher zu machen).

Sie tun das Richtige, Ihr Problem ist nur, dass der SunJCE Java Kryptografieanbieter AES für kennwortbasierte Verschlüsselung nicht unterstützt. Sie müssen einen alternativen Anbieter verwenden, der Folgendes bewirkt: Sie können beispielsweise den Anbieter Bouncy Castle mit dem Algorithmus "PBEWITHSHA256AND128BITAES-CBC-BC" verwenden. (Trotz des skurrilen Namens ist Bouncy Castle sehr angesehen).

Für "ist DES sicher genug für meine Daten", also gut, wenn die Daten, die Sie schützen, einem Angreifer weniger als ungefähr $ 10.000 wert wären, dann war es 2009 sicher genug. Und wenn Ihre Daten im Jahr 2014 überhaupt eine Verschlüsselung wert sind, lautet die Antwort nein.

+3

Sie können wahrscheinlich $ 10.000 durch $ 100 ersetzen ... angesichts der jüngsten Fortschritte in Brute-Forcing mit GPUs. –

-1

Sie sollten die Passwörter in keiner anderen Form als saltedhash digests aufbewahren.

Sie sollten dann das Betriebssystem-Berechtigungssystem verwenden, um die Hash-Kennwortdatei nur für den Benutzer lesbar zu machen, der die Kennwörter überprüft.

+1

Es ist eine persönliche Anwendung zum Speichern von Passwörtern. Ein Spielzeug-Passwort-Manager. –

+1

-1, Beantwortet die Frage nicht –

3

Wenn Sie Java 6 verfügbar haben, ist alles, was Sie benötigen, verfügbar. Schauen Sie sich diese question an und schauen Sie sich die angenommene Antwort für ein Codebeispiel an. Da Sie Dateien verschlüsseln möchten, sollte das iv, das generiert wird, der Datei vorangestellt werden, in die Sie den Chiffretext schreiben, damit es während der Entschlüsselung verfügbar ist.