解密三重DES“坏数据”

本文关键字:数据 坏数据 DES 三重 解密 | 更新日期: 2023-09-27 18:34:28

我是加密/解密的新手。我正在尝试解密一个加密的输入字符串,该字符串最多 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;
        }
    }

解密三重DES“坏数据”

如果使用 IV,则应使用 CipherMode.CBC .欧洲央行不使用任何IV。

此外,您的数据根本没有填充,它正好包含 32 个字节。要测试解密,通常先尝试不填充。这样,您可以通过查看生成的纯文本来确定使用哪种填充。

纯数据太老套了,无法在此处打印,所以我不会。

我遇到了一个非常类似的问题,我通过将填充模式更改为来修复它

我的密码模式是ECB(电子密码本(。