0

私はいくつかのデータを暗号化および復号化するためにrijndealを使用しています! しかし、それは私にこのエラーを与えます:

パディングが無効であり、削除できません。

私はよく検索しましたが、このエラーを解決するのに役立つものは何もありません! これは私の暗号化/復号化コードです:

public string Encrypt(string text)
    {

        mainRM = new System.Security.Cryptography.RijndaelManaged();
        mainRM.BlockSize = 256;
        mainRM.KeySize = 256;
        memorystream = new System.IO.MemoryStream();
        ICryptoTransform icrypt = mainRM.CreateEncryptor(key, iv);
        CryptoStream cryptstream = new CryptoStream(memorystream, icrypt, CryptoStreamMode.Write);
        cryptstream.FlushFinalBlock();
        System.IO.StreamWriter sw = new System.IO.StreamWriter(cryptstream);
        sw.Write(text);
        return Convert.ToBase64String(memorystream.ToArray());
    }

    public string Decrypt(string CryptedText)
    {
        string custinfo;
        System.IO.StreamReader streamreader;
        mainRM = new RijndaelManaged();
        mainRM.BlockSize = 256;
        mainRM.KeySize = 256;
        memorystream = new System.IO.MemoryStream(Convert.FromBase64String(CryptedText));
        ICryptoTransform icrypt = mainRM.CreateDecryptor(key, iv);
        memorystream.Position = 0;
        CryptoStream cryptstream = new CryptoStream(memorystream, icrypt, CryptoStreamMode.Read);
        cryptstream.FlushFinalBlock();
        streamreader = new System.IO.StreamReader(cryptstream);
        custinfo = streamreader.ReadToEnd();
        return custinfo;
    }

誰でも私を助けることができますか?

4

1 に答える 1

0

復号化側をパディングなしに設定します。平文の末尾に何が追加されているかを復号化して確認します。これにより、暗号化側が追加しているパディングがわかります。そのパディングを明示的に設定するように暗号化側を変更し、同じパディングを明示的に期待するように復号化側を変更します。

または、両方を PKCS7 (別名 PKCS5) パディングに設定します。両側でパディングを同じにする必要があります。

于 2013-04-28T12:08:03.020 に答える