ICryptoTransform _NewDecryptor 不存在

我正在尝试像这里一样反思 TripleDES(同样的问题):https : //social.msdn.microsoft.com/Forums/vstudio/en-US/8fdfcce7-3a8a-4271-8557-3df715c80df8/weak-key -cryptographic-exception?forum=netfxbcl


TripleDES 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()会有所帮助(因为它有不同的方法)。


慕沐林林
浏览 227回答 1
1回答

凤凰求蛊

查看参考源,_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 };创建解密器。
打开App,查看更多内容
随时随地看视频慕课网APP