1

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に暗号化を復号化するためのライブラリはありますか?もしそうなら、私はそれをどのように使用しますか?

4

3 に答える 3

1

DESCryptoServiceProviderを使用できます。この記事を参照してください。

于 2009-11-18T13:10:35.510 に答える
1

他の回答を補足する補足として。可能であれば、使用しないで、AESCryptoServiceProviderを使用してください。

現在、DES は多くのアプリケーションにとって安全ではないと考えられています。これは主に、56 ビットの鍵サイズが小さすぎることが原因です。1999 年 1 月、distributed.net と Electronic Frontier Foundation が協力して、22 時間 15 分で DES 鍵を公に解読しました。

于 2009-11-18T13:42:23.987 に答える
1

入力がストリームであると仮定します

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
于 2009-11-18T13:15:49.220 に答える