我正在使用下面的代码来加密和解密文件:
// 加密
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes("password");
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("FileName", FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
// 解密
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes("password");
FileStream fsCrypt = new FileStream("filename", FileMode.Open);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);
int data;
while ((data = cs.ReadByte()) != -1)
memorystream.WriteByte((byte)data);
它运行良好,没有任何问题!
由于某些原因,我在加密文件的第一个添加了 10 个字节!实际上我已经创建了一个 10 字节的文件(文件大小正好是 10 字节),然后我将加密文件附加到这个文件中。
请注意,10 字节文件未加密,是使用简单文件流创建的,可以在记事本中读取。
现在在解密代码中,我怎样才能消除前 10 个字节并解密文件中的剩余数据?
我尝试调用 ReadByte() 10 次,然后转到 WHILE 部分并解密文件,但它不起作用,并且出现长度无效异常。
提前致谢。