【发布时间】:2015-01-17 23:49:02
【问题描述】:
我想使用 AES 算法来加密一些文件。 这是我创建随机密钥的代码:
public byte[] CreateRandomKey()
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 128;
aes.GenerateKey();
return aes.Key;
}
首先我想知道的是,GenerateKey() 方法是否“足够随机”以确保安全?
这是我的加密和解密代码:
public byte[] Encrypt(byte[] key, byte[] input)
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 128;
aes.Key = key;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.Close();
return ms.ToArray();
}
public byte[] Decrypt(byte[] key, byte[] input)
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 128;
aes.Key = key;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.Close();
return ms.ToArray();
}
我想知道没有初始化向量的算法是否安全? 而且我的算法有问题,如果我加密一些字节并解密加密的结果,结果与原始字节不同。 我希望这对于一个问题来说并不算多,有人可以帮助我。
【问题讨论】:
-
您应该关注每个帖子的一个问题。对我来说,感觉“不工作”应该是您首先关心的问题。如果你能展示一个简短但完整的程序来说明问题,那将真的很有帮助。
标签: .net encryption cryptography aes