我在网站上找到了这段代码
private void EncryptFile(string inputFile)
{
string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
string cryptFile = inputFile + ".enc";
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();
}
我有两个问题。第一个是password
部分。我有一个生成随机字符串的函数:
public string CreatePassword(int length)
{
const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=?&/";
StringBuilder res = new StringBuilder();
Random rnd = new Random();
while (0 < length--){
res.Append(valid[rnd.Next(valid.Length)]);
}
return res.ToString();
}
当我编辑这样的代码时:
string password = CreatePassword(8);
有效。但是当我增加密码大小(如10)时,我收到此错误:
An unhandled exception of type 'System.Security.Cryptography.CryptographicException' occurred in mscorlib.dll
有没有办法增加密码长度?或者我们可以认为8长度是安全的吗?
其他问题:
我的输出文件是inputFile + ".enc"
当我删除".enc"
我得到的部分&#34;此文件由另一个进程使用&#34;错误。如何将加密的一个写入原始的?