在解密密钥时我收到错误:
CryptographicException未被用户代码处理 要解密的数据长度无效。
现在我想做的是,我想检查给定的字符串是否能够解密。如果它能够解密,那么我只想执行下面的代码。这样我就不会收到错误。
var byteBuff = Convert.FromBase64String(value);
var strDecrypted = Encoding.ASCII.GetString(
objDesCrypto.CreateDecryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));
有什么方法可以检查吗?
答案 0 :(得分:1)
我认为一个跟随的问题可能是:如果它无法解密,那么您的代码想要做什么。无论如何,你可以随时使用try ... catch:
try { /* your code */ }
catch (CryptographicException e) { /* whatever you need to if it is not able to */ }
答案 1 :(得分: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));
}