解密内容 :1243CFEBD819AA6B1C717DE870459F7B
秘钥 :
没有使用填充向量iv
AES解密异常Given final block not properly padded
原因: 解密的时候直接对输入的16进制值 1243CFEBD819AA6B1C717DE870459F7B 取getBytes了, 这样获取到的字节数组长度是16,不能直接这样操作 。
需要将16进制转字节数组,这样获取到的内容是32位,而且和之前直接获取到的字节数组不一样。
16进制转字节数组方法
这样解密之后的字符串是 在线助手 正常!!
还有一种情况是输入的字符串不正常不能解密!
....比如‘明文’用aes-ecb-256加密 zp填充 密码123 以utf8输出b64加密后就变成了‘lfKTZqoXmZGfuMRxrM1mCgGkDNwlro2vJc1/9+LAeoE=’解密就要反过来
所以你要知道你要解密的文件 加密方式 密码 填充 输出(二次加密) 和 编码 甚至还有偏移量所以 爆破?不存在的
/// summary
/// Aes解密
/// /summary
/// param name="source"源字符串/param
/// param name="key"aes密钥,长度必须32位/param
/// returns解密后的字符串/returns
public static string DecryptAes(string source, string key)
{
using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
{
aesProvider.Key = GetAesKey(key);
aesProvider.Mode = CipherMode.ECB;
aesProvider.Padding = PaddingMode.PKCS7;
using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
{
byte[] inputBuffers = Convert.FromBase64String(source);
byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
aesProvider.Clear();
return Encoding.UTF8.GetString(results);
}
}
}
算法破解就是找到加密算法的漏洞,进行技巧性的破解。
暴力破解是在知道加密算的情况下,用各种密码去测试。关于暴力破解也不是真正的暴力,有很多技术巧。如有效的密码字典就是一例。
AES目前没有算法浮出水面。
AES暴力破解与密码强度(如字串的MD5值就难,简单字串在密码字典排序告前,相对容易一些)和计算能力有关。但AES密钥长度太长,各种排列组合简直是天文数字,现有能力民间单机不可能破解。当然也可能一买彩票就中大奖,但似乎比那概率小得多。
具体是报什么错误呢?一般解密报错的情况有,输入不满足16的倍数个字节,这种情况会报,AES解密异常Given final block not properly padded,具体参考: 可以使用这个在线工具解密,如果报错会有相应的错误提示,希望能够帮助到你。