1
PaddingMode.PKCS7を使用して文字列を復号しようとすると、 'Padding is not invalid'という例外が発生しますが、PaddingMode.Zerosを使用しようとすると、例外が発生します。Paddingは無効であり、RijndaelManagedを使用して削除することはできません
P.S私はPaddingMode.PKCS7を使用してスクリプトを暗号化しているので、同じPaddingModeを使用してスクリプトを復号化する必要があります。
if (encrypted == null || encrypted.Length == 0)
throw new ArgumentNullException("ecrypted");
if (keyArr == null || keyArr.Length == 0)
throw new ArgumentNullException("keyArr");
if (iv == null || iv.Length == 0)
throw new ArgumentNullException("iv");
using (RijndaelManaged rij = new RijndaelManaged())
{
rij.Padding = PaddingMode.PKCS7;
rij.Mode = CipherMode.CBC;
rij.KeySize = 128;
rij.BlockSize = 128;
rij.Key = keyArr;
rij.IV = iv;
ICryptoTransform decryptor = rij.CreateDecryptor();
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
cs.Write(encrypted, 0, encrypted.Length);
}
plainText = Encoding.UTF8.GetString(ms.ToArray());
}
}
事前
問題を特定できるように、ここにコードを入力してください。 – Andy
Andy、私はコードを提供しています、plsは問題を特定できますか? – Krish
復号化するコードを追加しましたが、暗号化はしません。私の推測では、暗号テキストをBase64や16進数で正しくエンコードしていないとデータが壊れてしまうのです。暗号テキストにUTF-8やASCIIなどのエンコーディングを使用すると、バイトシーケンスが印字不能文字または制御文字として解釈されます。上記のように安全なエンコーディングを使用してください。 – Andy