How do I use DES
in .NET?
Here's how I'd do it in Java:
public static String decrypt(byte[] pin, byte [] desKeyData ) throws Exception {
//if (ISOConstantsLibrary.DEBUG) System.out.println("original: " + pin + " key: " + ISOUtil.bcd2str(desKeyData, 0, 2 * desKeyData.length, false) );
String out = "";
try {
SecretKeySpec desKey = new SecretKeySpec(desKeyData, "DES");
Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");//DES/CBC/PKCS5Padding
byte[] encrypted_password = pin;
cipher.init(Cipher.DECRYPT_MODE, desKey);
byte[] decrypted_password = cipher.doFinal(encrypted_password);
out = new String(decrypted_password);
//if (ISOConstantsLibrary.DEBUG) System.out.println("Decrypted Password " + out);
}
catch (Exception e) {
e.printStackTrace();
}
return out;
}
Is there a library for decrypting DES
encryption in .NET? If so, how do I use it?
Assuming your input is a stream
using System.Security.Cryptography
string key;
Stream input;
string output;
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
//Set key and initialization vector for DES algorithm
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.IV = ASCIIEncoding.ASCII.GetBytes(key);
//Create CryptoStream layer to decrypt input on reading
CryptoStream decryptStream = new CryptoStream(input, DES.CreateDecryptor(), CryptoStreamMode.Read);
//return decrypted
return new StreamReader(decryptStream ).ReadToEnd();
otherwise you can of course easily write the input into a stream. For ECB mode you also need to set the Mode of the DES object to ECB:
DES.Mode = CipherMode.ECB