我使用DES加密文件然后在服务器上成功解密并使用
System.IO.File.WriteAllBytes(@"c:\test\" + fileName, decryptedFile);
方法文件数据改变了一点,文本是“加密和解密usind DES blah blah blah blah blah” 解密后的结束文件中的文字是“k $ nlng and decrypting usind DES blah blah blah blah blah” 我也试过这个:
using (BinaryWriter binWriter =
new BinaryWriter(File.Open(@"C:\Test\" + fileName, FileMode.Create)))
{
binWriter.Write(decryptedFile);
}
文字仍然不一样 加密:
public byte [] DESEncrypt(byte [] fileBytes)
{
CryptoStreamMode mode = CryptoStreamMode.Write;
// Set up streams and encrypt
MemoryStream memStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memStream,
cryptoProvider.CreateEncryptor(cryptoProvider.Key, cryptoProvider.Key), mode);
cryptoStream.Write(fileBytes, 0, fileBytes.Length);
cryptoStream.FlushFinalBlock();
// Read the encrypted message from the memory stream
byte[] encryptedMessageBytes = new byte[memStream.Length];
memStream.Position = 0;
memStream.Read(encryptedMessageBytes, 0, encryptedMessageBytes.Length);
MessageBox.Show("encrypted DES");
return encryptedMessageBytes;
}
解密:
static public byte[] DESdecrypt(byte [] fileBytes)
{
ICryptoTransform decryptor = cryptoProvider.CreateDecryptor();
byte[] originalAgain = decryptor.TransformFinalBlock(fileBytes, 0, fileBytes.Length);
return originalAgain;
}
由于
答案 0 :(得分:0)
很难说,不是这方面的专家,而是在加密前和加密和解密之后比较你的字节。如果它们完全相同则没有问题。 WriteALLBytes可能不是唯一的东西。认为MIME类型。一个类似的问题是我必须具体说明我保存的文件类型。
答案 1 :(得分:0)
您为“key”和“iv”值传递相同的值。每次调用该函数时,您的“iv”值都会更新(因此,您的密钥会被更改)。
所以你基本上是这样做的:
key =“key” 加密(密钥,密钥)
- 键现已更改。
您需要做的是:
key =“key” iv =密钥副本 加密(密钥,iv)