使用DES3加密3000字节以上

时间:2012-02-23 10:35:44

标签: c# encryption

我尝试使用DES3加密数据:

private byte[] EncryptKey(byte[] wrappedKey)
    {
        MemoryStream ms = new MemoryStream(wrappedKey);
        TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
        cryptoProvider.Key = transportKeyBytes; //key
        cryptoProvider.Padding = PaddingMode.None;
        cryptoProvider.Mode = CipherMode.ECB;

        CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        byte[] key = new Byte[wrappedKey.Length];
        cs.Read(key, 0, wrappedKey.Length);
        cs.Close();
        ms.Close();

        return key;
    }

但我得到错误说:

Length of the data to encrypt is invalid.

数据的最大大小是否可以加密?

1 个答案:

答案 0 :(得分:3)

您没有使用任何填充。这可能是导致错误的原因。通过不添加任何填充,您只能加密确切数量的8字节块。将填充更改为PKCS#5 for DES。

ECB模式不安全。有关(字面)插图,请参阅Wikipedia。改为使用CBC或CTR模式。

3DES已过时。除非您必须使用它来与旧系统兼容,否则请使用AES。