我是加密/解密的新手。我正在尝试解密一个经过加密的输入字符串,长度为44个字符。
这就是我到目前为止所拥有的,但当它试图执行"TransformFinalBlock“函数时,我总是得到”坏数据“。
public static String Decrypt(String input)
{
try{
byte[] inputArray = Convert.FromBase64String(input);
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.KeySize = 128;
tripleDES.Key = UTF8Encoding.UTF8.GetBytes("0123456789ABCDEF");
tripleDES.IV = UTF8Encoding.UTF8.GetBytes("ABCDEFGH");
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = tripleDES.CreateDecryptor();
byte[] resultArray = transform.TransformFinalBlock(inputArray, 0, inputArray.Length);
tripleDES.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}
catch(Exception except){
Debug.WriteLine(except + "\n\n" + except.StackTrace);
return null;
}
}发布于 2015-07-30 04:35:14
我遇到了一个非常类似的问题,我通过将PaddingMode更改为None来修复它
My CipherMode is ECB (电子代码簿)。
https://stackoverflow.com/questions/10626126
复制相似问题