0

DESを使用してファイルを暗号化し、サーバーで正常に復号化した後、

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

メソッドファイルデータが少し変更された場合、テキストは「DES blah blahblahblahを使用した暗号化と復号化」です。復号化後の最後のファイルのテキストは「k$nlng and Decrypting usind DES 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;
    }

ありがとう

4

2 に答える 2

0

「key」と「iv」の値に同じ値を渡しています。関数を呼び出すたびに、「iv」値が更新されます(したがって、キーが変更されます)。

だからあなたは基本的にこれをやっています:

key = "key"暗号化(キー、キー)

--キーが変更されました。

あなたがする必要があるのは:

key = "key" iv =キーのコピー暗号化(key、iv)

于 2012-04-28T04:57:14.783 に答える
0

このテーマの専門家ではありませんが、暗号化前と暗号化および復号化後のバイトを比較してください。それらが同一の場合、プロセスに問題はありません。WriteALLBytes だけではないかもしれません。MIMEタイプだと思います。同様の問題は、保存しているファイルの種類を具体的に言わなければならなかったことです。

于 2012-04-28T04:31:33.880 に答える