wgz001 发表于 2022-2-9 08:36:38

这个函数怎么求逆运算,谢谢


从一个软件分析中得到下面一个函数,伪代码如下
RSA_POW_MOD(M,e,N)
{
        CONST = N-M;
        CONST2= N-2;   
        RSI =2;
        RDI =M;
        While(e>0)
        {
                if(e and 1 )
                {
                        RSI = (RSI*RDI+CONST)MOD N;
                        RDI = (RDI*RDI+CONST2) MOD N;
                        e >>= 1;
                        
               
                }
              else
              {
                        RDI = (RSI*RDI+CONST)MOD N;
                        RSI = (RSI*RSI+CONST2) MOD N;
                        e >>=1;
        }

        return RSI;

}

其中e=65537,只是用来保证循环的次数,已知RSI,e,N(N是一个大数),能不能求得M,谢谢



一起玩游戏

wai1216 发表于 2022-2-9 11:28:38

本帖最后由 wai1216 于 2022-2-9 11:30 编辑

Lucas序列
http://www.weidai.com/lucas.html
https://eprint.iacr.org/2016/937.pdf

tc使用 可以patch下 可参考
https://xakep.ru/2018/05/16/total-commander-hack/
https://exelab.one/forum/%D0%BA% ... D1%8F/29694-2-22289

wgz001 发表于 2022-2-9 12:01:15

wai1216 发表于 2022-2-9 11:28
Lucas序列
http://www.weidai.com/lucas.html
https://eprint.iacr.org/2016/937.pdf


谢谢表哥,666

wangwei628 发表于 2022-2-9 13:06:03

wai1216 发表于 2022-2-9 11:28
Lucas序列
http://www.weidai.com/lucas.html
https://eprint.iacr.org/2016/937.pdf


https://xakep.ru/2018/05/16/total-commander-hack/
请问一下表哥这个源码下载到了吗,现在不能下载了,如果有能不能发我一下,80872969@qq.com

wai1216 发表于 2022-2-9 17:36:30

本帖最后由 wai1216 于 2022-2-9 17:38 编辑

wangwei628 发表于 2022-2-9 13:06
https://xakep.ru/2018/05/16/total-commander-hack/
请问一下表哥这个源码下载到了吗,现在不能下载了 ...
没有
如果是替换n 生成一对p&q 然后逆运算
应该就可以了

可能需要的代码
// 生成p/q/n/u
https://github.com/weidai11/cryptopp/blob/master/luc.cpp#L133
// 计算v
// Integer Lucas(const Integer &e, const Integer &pIn, const Integer &n)
https://github.com/weidai11/cryptopp/blob/master/nbtheory.cpp#L819
// Integer InverseLucas(const Integer &e, const Integer &m, const Integer &p, const Integer &q, const Integer &u)
https://github.com/weidai11/cryptopp/blob/master/nbtheory.cpp#L1005

ps122 发表于 2022-2-9 18:17:54

这是要找私钥吗?N有多少位?不大的话直接分解N试试吧

wgz001 发表于 2022-2-9 18:28:18

ps122 发表于 2022-2-9 18:17
这是要找私钥吗?N有多少位?不大的话直接分解N试试吧

谢谢,RSA832,分解是不可能的了,想替换然后自己keygen

ps122 发表于 2022-2-9 18:39:17

wgz001 发表于 2022-2-9 18:28
谢谢,RSA832,分解是不可能的了,想替换然后自己keygen

是有点大,只能替换了

wangwei628 发表于 2022-2-9 19:24:19

wai1216 发表于 2022-2-9 17:36
没有
如果是替换n 生成一对p&q 然后逆运算
应该就可以了


好的,谢谢表哥

wai1216 发表于 2022-2-10 11:15:52

本帖最后由 wai1216 于 2022-2-10 11:17 编辑

wangwei628 发表于 2022-2-9 19:24
好的,谢谢表哥
简单点话windows平台 点开cryptopp-master里的cryptest.sln
编译完成后
在cryptopp-master\test.cpp
找到main函数

修改为如下 可以验证lucas
int CRYPTOPP_API main(int argc, char *argv[])
{
      CryptoPP::Integer e("0x10001");
      CryptoPP::Integer p("0x7F103E504ACF2A8A8B9C2C4DFB2F3441DEF4B73E47B611BFED43DF24737320909136DB6BA304DB0867C7A9334C6C44F9EA08DE41DEAC3EC2EEE61CBFC100CB1ADE426EA5C602D7FE0590A299D6A2B536E716D267FA547041D677D6CEAAF7D94E053C281DFABA568F");
      CryptoPP::Integer n("0xAAD4474DC8387E81BB095D810F4F4F21D5D7CCC756E3D6E5DEE48AC000C25AA0EFAD0AD3A5AC46F15B50249597461BBB87CDC3F1BA37C17A9A207A3603E38E718F9927A5EB38005D8B72EAFDC63931C3D93C1FAD457A17CA85BEB40F3FA9152770DAC12E8E3B912D");
      CryptoPP::Integer c = CryptoPP::Lucas(e, p, n);
      std::cout << std::hex << c << std::endl;

      return CryptoPP::Test::scoped_main(argc, argv);
}

页: [1] 2 3
查看完整版本: 这个函数怎么求逆运算,谢谢