我正在尝试像这里一样反思 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 };
创建解密器。
- 1 回答
- 0 关注
- 226 浏览
添加回答
举报
0/150
提交
取消