16バイトの暗号化されたデータがあり、問題を解読したいのは、私のルーチンが最初の8バイトのみを解読し、バイト9で例外Bad Dataをスローすることです。私のデータには正確に16バイトのデータが埋め込まれていません。
public byte[] Decrypt(byte[] data)
{
List<byte> resData = new List<byte>();
try
{
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
byte[] bytes = StringToByteArray(_key);
MemoryStream memoryStream = new MemoryStream(data);
CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(bytes, new byte[8]), CryptoStreamMode.Read);
cryptoProvider.Padding = PaddingMode.None;
cryptoProvider.Mode = CipherMode.ECB;
BinaryReader reader = new BinaryReader(cryptoStream);
for (int i = 0; i < data.Length; i++)
{
resData.Add(reader.ReadByte());
}
}
catch { }
return resData.ToArray();
}