C# - CryptographicException未处理

时间:2015-09-15 09:48:24

标签: c# cryptography

我几天来一直遇到以下代码的麻烦,我真的不知道为什么我有这么多麻烦,希望有人能指出我正确的方向,或许我是在过度思考它。

An unhandled exception of type 'System.Security.Cryptography.CryptographicException' occurred in mscorlib.dll

其他信息:错误数据。

这是代码

return Encoding.ASCII.GetString(new TripleDESCryptoServiceProvider() { Key = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(key)), Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }.CreateDecryptor().TransformFinalBlock(encrypted.Split('-').Select(s => Convert.ToByte(s, 16)).ToArray(), 0, encrypted.Split('-').Select(s => Convert.ToByte(s, 16)).ToArray().Length));

这就是所谓的。

{
        if (args.Length == 0)
            return;

        if (args[0] == "new")
            File.Delete("old_updater.exe");
        else if (args[0] != Encryption.Decrypt_Param("06-8A-AB-DD-64-4C-6D-ED-AD-83-4A-1E-80-E4-36-15", "Incompitis Ingoramous"))
            Process.GetCurrentProcess().Kill();

        if (Process.GetProcessesByName("Updater").Length > 1)
            Process.GetCurrentProcess().Kill();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }

1 个答案:

答案 0 :(得分:0)

打破代码有帮助!

您获得的错误在TransformFinalBlock中。您示例代码中的加密数据似乎没有填充。

将填充更改为PaddingMode.None,它不再引发错误。