我尝试使用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.
数据的最大大小是否可以加密?
答案 0 :(得分:3)
您没有使用任何填充。这可能是导致错误的原因。通过不添加任何填充,您只能加密确切数量的8字节块。将填充更改为PKCS#5 for DES。
ECB模式不安全。有关(字面)插图,请参阅Wikipedia。改为使用CBC或CTR模式。
3DES已过时。除非您必须使用它来与旧系统兼容,否则请使用AES。