我可能应该从这个开始:我认为这是一个娱乐或锻炼项目 - 而不是试图创建真正安全的东西。
- 正如owlstead所说:使用RNGCryptoServiceProvider。
- 如果反向使用,从文件中删除使用过的密钥材料会容易得多。如果您需要加密 1024 个字节,请从文件中读取最后 1024 个字节并截断它。简化:
byte[] Encrypt(byte[] plain){
using (FileStream keyFile = new FileStream(FileName, FileMode.Open))
{
keyFile.Seek(-plain.Length, SeekOrigin.End);
byte[] key = new byte[plain.Length];
keyFile.Read(key, 0, plain.Length);
byte[] encrypted = new byte[plain.Length];
for(int i=0;i<plain.Length;i++){
encrypted[i] = (byte) (plain[i] ^ key[plain.Length - 1 - i]);
}
keyFile.SetLength(keyFile.Length - plain.Length);
return encrypted;
}
}