Как использовать алгоритм DES в .NET? - PullRequest
1 голос
/ 18 ноября 2009

Как использовать DES в .NET?

Вот как я это сделаю на 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;
}

Есть ли библиотека для расшифровки DES шифрования в .NET? Если да, то как мне его использовать?

Ответы [ 3 ]

1 голос
/ 18 ноября 2009

Предполагая, что ваш ввод - поток

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();

в противном случае вы, конечно, можете легко записать ввод в поток. Для режима ECB вам также необходимо установить режим объекта DES на ECB:

DES.Mode = CipherMode.ECB
1 голос
/ 18 ноября 2009

В качестве примечания, дополняющего другие ответы. Если вы можете, не используйте его, используйте AESCryptoServiceProvider .

DES теперь считается небезопасным для многих приложений. Это в основном из-за слишком большого размера ключа 56 бит маленький; в январе 1999 г. распределенный. и электронный Фонд Границы сотрудничал с публично взломать ключ DES за 22 часа и 15 минут

1 голос
/ 18 ноября 2009

Вы можете использовать DESCryptoServiceProvider. Смотрите эту статью .

...