2

キーの復号化中にエラーが発生します:

CryptographicException がユーザー コードによって処理されませんでした。
復号化するデータの長さが無効です。

今私がやりたいことは、指定された文字列が復号化できるかどうかを確認したいということです。復号化できる場合は、以下のコードを実行したいだけです。だから私はエラーを取得できません。

var byteBuff = Convert.FromBase64String(value);
var strDecrypted = Encoding.ASCII.GetString(
                   objDesCrypto.CreateDecryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));

それを確認する方法はありますか?

4

2 に答える 2

1

次の質問は次のとおりだと思います。復号化できない場合、コードは何をしたいのですか。とにかく、それを考慮して、いつでも try...catch を次のように使用できます。

try { /* your code */ }
catch (CryptographicException e) { /* whatever you need to if it is not able to */ }
于 2013-10-30T07:43:06.657 に答える
0

解決策を見つけました。有効な base64 文字列を確認する必要があります。

if ((value.Length % 4 == 0) && Regex.IsMatch(value, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None))
{
    var byteBuff = Convert.FromBase64String(value);
    decryptedString =
        Encoding.ASCII.GetString(
            objDesCrypto.CreateDecryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));
}
于 2015-01-20T13:36:36.927 に答える