簡體   English   中英

加密然后解密后文件數據已更改

[英]File data changed after encrypting then decrypting

我使用DES加密了文件,然后在服務器上成功解密並使用

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

方法文件數據稍有變化,其文本為“加密和解密usind DES等等等等”,解密后的最終文件中的文本為“ k $ nlng和解密usind 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;
    }

謝謝

很難說,不是這個問題的專家,而是在加密之前和加密解密之后比較您的字節。 如果它們相同,則該過程沒有問題。 WriteALLBytes可能不是唯一的東西。 認為MIME類型。 一個類似的問題是我必須特別說明我要保存的文件類型。

您正在為“鍵”和“ iv”值傳遞相同的值。 每次調用該函數時,“ iv”值都會更新(因此,鍵也會更改)。

因此,您基本上是在這樣做:

key =“ key”加密(密鑰,密鑰)

-密鑰現已更改。

您需要做的是:

密鑰=“密鑰” iv =密鑰副本(密鑰,iv)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM