为什么我只能加密16个字符的文本?
作品:
string plainText = "1234567890123456";不管用:
string plainText = "12345678901234561";不管用:
string plainText = "123456789012345";代码:
string plainText = "1234567890123456";
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
byte[] keyBytes = System.Text.Encoding.UTF8.GetBytes("1234567890123456");
byte[] initVectorBytes = System.Text.Encoding.UTF8.GetBytes("1234567890123456");
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.Mode = CipherMode.CBC;
symmetricKey.Padding = PaddingMode.Zeros;
ICryptoTransform encryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
byte[] cipherTextBytes = memoryStream.ToArray();
memoryStream.Close();
cryptoStream.Close();
string cipherText = Convert.ToBase64String(cipherTextBytes);
Console.ReadLine();发布于 2010-04-18 20:49:50
不确定我是否理解这个问题,但是看看我假设代码的意图是什么
symmetricKey.CreateDecryptor很可能是
symmetricKey.CreateEncryptor发布于 2010-04-18 20:44:03
可能是因为AES是块密码,每个块有128位。也许您只需要添加一个类似于length % 128 == 0的填充。
(我不是C#开发人员,但可能会发生一个实现不关心自己添加填充的情况)
只是一个提示:如果它适用于256位,那就试试。
https://stackoverflow.com/questions/2663862
复制相似问题