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 回答