扩展.NET TripleDESCryptoServiceProvider

时间:2018-08-19 06:35:29

标签: c# .net cryptography

我需要在C#中使用带有弱密钥的TripleDESCryptoServiceProvider。我正在尝试根据MSDN中的建议以及下面的其他几篇文章来解决。

编辑:似乎我正在寻找不存在的东西。如果为@for (int i = 0; i < 2; i++){ Question @i @Html.RadioButtonFor(m => m.SelectedAnswer[i], "Answer1"+i) <label>Answer1 @i</label> @Html.RadioButtonFor(m => m.SelectedAnswer[i], "Answer2"+i) <label>Answer2 @i</label> @Html.RadioButtonFor(m => m.SelectedAnswer[i], "Answer3"+i) <label>Answer3 @i</label> @Html.RadioButtonFor(m => m.SelectedAnswer[i], "Answer4"+i) <label> Answer4 @i</label> } 编译,则不会编译_NewEncryptor。 @John提供的答案是正确的。

编辑:正如@John在答案中指出的那样,我已经重构了代码。但是问题尚未解决。

Mono

但是

public static class TripleDESCryptoServiceProviderExtensions { public static ICryptoTransform CreateWeakEncryptor(this TripleDESCryptoServiceProvider cryptoProvider, byte[] key, byte[] iv) { MethodInfo mi = cryptoProvider.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic | BindingFlags.Instance); object[] Par = { key, cryptoProvider.Mode, iv, cryptoProvider.FeedbackSize, 1 }; var trans = mi.Invoke(cryptoProvider, Par) as ICryptoTransform; return trans; } public static ICryptoTransform CreateWeakEncryptor(this TripleDESCryptoServiceProvider cryptoProvider) { return CreateWeakEncryptor(cryptoProvider, cryptoProvider.Key, cryptoProvider.IV); } }

返回null。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题是您使用了错误的方法名称。您正在指定select x from table where col1 like '%6789%'; ,但是该方法实际上称为_NewDecryptor。进行更改可以解决方法。

但是,如果我误解了,而您确实在寻找一种does not exist_NewEncryptor方法。

也就是说,您的代码还有另一个问题:它会导致_NewDecryptor,因为您是递归地调用该方法。我猜你的意思是:

StackOverflowException

相反。

编辑:这是一个提供预期结果的示例控制台应用程序。

return trans;

注意:这是一个针对该框架的4.7.1版的.NET Framework控制台应用程序。