【发布时间】:2013-10-27 03:04:08
【问题描述】:
加密方法如下:
public static byte[] Encrypt(byte[] plaintext, byte[] key)
{
using (var aes = Aes.Create())
{
aes.BlockSize = 128;
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.None;
var iv = new byte[16];
for (int i = 0; i < iv.Length; i++)
iv[i] = 0;
aes.IV = iv;
var encryptor = aes.CreateEncryptor(key, aes.IV);
using(var target = new MemoryStream())
using (var cs = new CryptoStream(target, encryptor, CryptoStreamMode.Write))
{
using (var source = new StreamWriter(cs))
source.Write(plaintext);
return target.ToArray();
}
}
}
我怎么称呼它:
var key = new byte[16] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var plaintext = new byte[16] { 128, 0, 112, 0, 96, 0, 80, 0, 64, 0, 48, 0, 32, 0, 16, 0 };
但是它一直在 source.Write(plaintext) 抛出一个异常,说它不是一个完整的块?我使用的是 16 字节/128 位数组,块大小设置为 128。我不明白有什么问题?
另外,只是为了阻止任何关于欧洲央行不好等的建议,这不是为了生产,我只是在玩。
【问题讨论】:
-
顺便说一句,
new byte[16]已经初始化为0。 -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
我的数据已损坏。我不得不从数据库中删除它并重新开始。
标签: c# encryption