我需要在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。有什么建议吗?
答案 0 :(得分:0)
问题是您使用了错误的方法名称。您正在指定select x from table where col1 like '%6789%';
,但是该方法实际上称为_NewDecryptor
。进行更改可以解决方法。
但是,如果我误解了,而您确实在寻找一种does not exist的_NewEncryptor
方法。
也就是说,您的代码还有另一个问题:它会导致_NewDecryptor
,因为您是递归地调用该方法。我猜你的意思是:
StackOverflowException
相反。
编辑:这是一个提供预期结果的示例控制台应用程序。
return trans;
注意:这是一个针对该框架的4.7.1版的.NET Framework控制台应用程序。