2017-07-10 4 views
0

Wenn ich versuche, "123456" mit der Taste "qwertykey" Verschlüsselung und bekam Antwort als "UVEXg9fgBxo =" in Online-Tool https://www.tools4noobs.com/online_tools/encrypt/DES-Verschlüsselung in Android

Aber wenn ich benutze Android Code ich erhalte "2XQNkfXlN6E =" als verschlüsseltes

Wert

mein Code

public String encrypt(String plainTextPassword){ 
String encrypted = ""; 
try{ 
DESKeySpec keySpec = new DESKeySpec("qwertykey".getBytes()); 
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
SecretKey key = keyFactory.generateSecret(keySpec); 
byte[] cleartext = plainTextPassword.getBytes(); 

Cipher cipher = Cipher.getInstance("DES"); // cipher is not thread safe 
cipher.init(Cipher.ENCRYPT_MODE, key); 
encrypted = Base64.encodeToString(cipher.doFinal(cleartext),Base64.DEFAULT); 

}catch (Exception e){ 

} 
return encrypted; 
} 

könnte jemand bitte helfen Sie mir diese

+0

Ausdruck Ausnahme in 'fangen' Block ... – ELITE

+0

Stellen Sie sicher, dass Sie die gleichen Parameter (Modus, iv) wie das Online-Tool verwenden (was übrigens ein wenig zweifelhaft ist). – Henry

+0

Verwenden Sie schwammige Burg Glas für die Verschlüsselung und Entschlüsselung? –

Antwort

0

dES unterstützt nur eine Schlüsselgröße von 56 Bit (64 Bit mit pari bei der Erreichung ty). Sie können also keinen größeren Schlüssel verwenden. McRept weiß das und verwendet stillschweigend nur die ersten 8 Bytes. Mcrypt implementiert auch keine richtige Auffüllung. Stattdessen puffert es mit 0x00 Bytes. Sie sollten eine ähnliche, verwenden können, aber nicht gleich, Polsterung in BouncyCastle:

Cipher.getInstance("DES/ECB/ZeroBytePadding", "BC"); 

nie ECB mode verwenden. Es ist deterministisch und daher nicht semantisch sicher. Sie sollten zumindest einen randomisierten Modus wie CBC oder CTR verwenden. Es ist besser, Ihre Chiffrate zu authentifizieren, damit Angriffe wie ein Padding-Orakel-Angriff nicht möglich sind. Dies kann mit authentifizierten Modi wie GCM oder EAX oder mit einem Encrypt-then-MAC-Schema erfolgen.

HINWEIS DES sollte für Neuentwicklungen nicht verwendet werden.

+0

Ja, das stimmt –