我正在使用c#实现Rijndael算法来加密/解密文件。下面是我的代码:在Rijndael加密算法中创建自定义长度密码
private void EncryptFile(string inputFile, string outputFile, string password)
{
try
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password.ToString());
string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
}
catch
{
}
}
现在,事情是,该功能仅当密码长度为8的倍数。也就是说,如果密码的长度为8,16,32等,然后它不起作用。
使用密钥为IV会失败CBC的目的并大幅降低安全性。 – SLaks
安全性**很难**。在您可以安全使用加密基元之前,您需要了解更多关于加密技术的知识。 – SLaks
你忘了问一个问题:) – tnw