加密然后解密后文件数据更改

本文关键字:数据 文件 然后 解密 加密 | 更新日期: 2023-09-27 18:32:35

>我使用 DES 加密了一个文件,然后在服务器上成功解密并使用

System.IO.File.WriteAllBytes(@"c:'test'" + fileName, decryptedFile);

方法文件数据稍微改变了一点,文本是"加密和解密使用DES等等等等"解密后结束文件中的文字是" k$nlng 和解密使用DES 等等等等"我也试过这个:

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;
    }

谢谢

加密然后解密后文件数据更改

您正在为"键"和"iv"值传递相同的值。 每次调用函数时,您的"iv"值都会更新(因此,您的密钥会发生变化)。

所以你基本上是这样做的:

键 = "键"加密(密钥、密钥)

-- 密钥现已更改。

您需要做的是:

键 = "键"iv = 密钥副本加密(密钥,iv)

很难说,不是这方面的专家,但在加密之前和加密和解密之后比较你的字节。如果它们相同,则过程没有问题。WriteALLBytes可能不是唯一的东西。 想想哑剧类型.一个类似的问题是我必须明确说明我正在保存的文件类型。