为了账号安全,请及时绑定邮箱和手机立即绑定

ICryptoTransform _NewDecryptor 不存在

ICryptoTransform _NewDecryptor 不存在

C#
慕沐林林 2021-11-07 20:28:13
我正在尝试像这里一样反思 TripleDES(同样的问题):https : //social.msdn.microsoft.com/Forums/vstudio/en-US/8fdfcce7-3a8a-4271-8557-3df715c80df8/weak-key -cryptographic-exception?forum=netfxbclTripleDES tripleDESalg = TripleDES.Create();byte[] EmptyKey = new byte[0x18];byte[] EmptyIV = new byte[8];TripleDESCryptoServiceProvider sm = tripleDESalg as TripleDESCryptoServiceProvider;MethodInfo mi =  sm.GetType().GetMethod("_NewEncryptor",BindingFlags.NonPublic | BindingFlags.Instance);object[] Par = { EmptyKey, sm.Mode, IV, sm.FeedbackSize, 0 };ICryptoTransform trans = mi.Invoke(sm, Par) as ICryptoTransform;加密时我可以成功绕过弱密钥异常,但是当我想要解密器时,没有这样的东西_NewDecryptor,只有_NewEncryptor(我使用 进行了检查.GetMethods())。那么解密器有没有可能实现相同的方法?也许使用TripleDESCng()会有所帮助(因为它有不同的方法)。
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

查看参考源,_NewDecryptor而不是_NewEncryptor决定操作模式的最后一个参数:


private ICryptoTransform _NewEncryptor (

    byte[] rgbKey, CipherMode mode, byte[] rgbIV, 

    int feedbackSize, CryptoAPITransformMode encryptMode)

传递0forencryptMode表示加密,1表示解密,因此您需要:


object[] Par = { EmptyKey, sm.Mode, IV, sm.FeedbackSize, 1 };

创建解密器。


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信