飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

楼主: wgz001

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

[复制链接]
  • TA的每日心情
    开心
    2024-12-31 09:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2022-2-10 11:47:50 | 显示全部楼层
    本帖最后由 wangwei628 于 2022-2-10 11:56 编辑

    算出来是对的

    点评

    有空写了个完整调用 仅供参考 [mw_shl_code=text,true] class LUCPrimeSelector : public CryptoPP::PrimeSelector { public: LUCPrimeSelector(const CryptoPP::Integer& e) : m_e(e) {} bool IsAcce  详情 回复 发表于 2022-2-10 12:59
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2022-2-10 12:59:41 | 显示全部楼层
    本帖最后由 wai1216 于 2022-2-10 18:15 编辑

    有空写了个完整调用
    仅供参考

    [Plain Text] 纯文本查看 复制代码
            class LUCPrimeSelector : public CryptoPP::PrimeSelector        {
            public:
                    LUCPrimeSelector(const CryptoPP::Integer& e) : m_e(e) {}
                    bool IsAcceptable(const CryptoPP::Integer& candidate) const
                    {
                            return CryptoPP::RelativelyPrime(m_e, candidate + 1) && CryptoPP::RelativelyPrime(m_e, candidate - 1);
                    }
                    CryptoPP::Integer m_e;
            };
    
    //        CryptoPP::Test::SetGlobalSeed(argc, argv, CryptoPP::Test::s_globalSeed);
    
    //        CryptoPP::SymmetricCipher& cipher = dynamic_cast<CryptoPP::SymmetricCipher&>(CryptoPP::Test::GlobalRNG());
    //        cipher.SetKeyWithIV((CryptoPP::byte*)CryptoPP::Test::s_globalSeed.data(), CryptoPP::Test::s_globalSeed.size(), (CryptoPP::byte*)CryptoPP::Test::s_globalSeed.data());
    
            CryptoPP::AutoSeededRandomPool prng;
    
            CryptoPP::Integer luc_e("0x10001");
            int modulusSize = 832;
    
            LUCPrimeSelector selector(luc_e);
            CryptoPP::Integer luc_p;
            CryptoPP::Integer luc_q;
            CryptoPP::AlgorithmParameters primeParam = CryptoPP::MakeParametersForTwoPrimesOfEqualSize(modulusSize)
                    ("PointerToPrimeSelector", selector.GetSelectorPointer());
            luc_p.GenerateRandom(prng, primeParam);
            luc_q.GenerateRandom(prng, primeParam);
    
            CryptoPP::Integer luc_n = luc_p * luc_q;
            CryptoPP::Integer luc_u = luc_q.InverseMod(luc_p);
            std::cout << "luc_p:" << std::endl;
            std::cout << std::hex << luc_p << std::endl;
            std::cout << "luc_q:" << std::endl;
            std::cout << std::hex << luc_q << std::endl;
            std::cout << "luc_n:" << std::endl;
            std::cout << std::hex << luc_n << std::endl;
            std::cout << "luc_u:" << std::endl;
            std::cout << std::hex << luc_u << std::endl;
    
            CryptoPP::Integer msg("0x4f6742f0b939f6e3951f4bee116533c196ae3b69a824b7cd418b0d25e0b3b03c3016e4394a771398f677a24f17565f3a46c7115c1e944e104c770a3182b79ff98a5eaf2cfdd88b75acd96380586e00677307c31e9db4fd42b795c8b51ea975ccec9a5968c84ede0e");
            std::cout << "msg:" << std::endl;
            std::cout << std::hex << msg << std::endl;
    
            CryptoPP::Integer msg_v = CryptoPP::Lucas(luc_e, msg, luc_n);
            std::cout << "Lucas:" << std::endl;
            std::cout << std::hex << msg_v << std::endl;
    
            CryptoPP::Integer msg_iv = CryptoPP::InverseLucas(luc_e, msg_v, luc_q, luc_p, luc_u);
            std::cout << "InverseLucas:" << std::endl;
            std::cout << std::hex << msg_iv << std::endl;




    点评

    试了一下,用软件里面的N,调用函数CryptoPP::Lucas计算出来的数据一样,但用自定义生成的N,和软件对不上,不知道哪里出问题了  详情 回复 发表于 2022-2-10 17:15
    感觉离注册机又进了一大步  详情 回复 发表于 2022-2-10 15:03

    评分

    参与人数 2威望 +2 飘云币 +2 收起 理由
    zhouwensmile + 1 + 1 PYG有你更精彩!
    wgz001 + 1 + 1 赞一个,这个帖子很给力!

    查看全部评分

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-31 09:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2022-2-10 13:54:37 | 显示全部楼层
    学习了,多谢表哥指点!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

     楼主| 发表于 2022-2-10 15:03:51 | 显示全部楼层
    wai1216 发表于 2022-2-10 12:59
    有空写了个完整调用
    仅供参考

    感觉离注册机又进了一大步
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-31 09:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2022-2-10 17:15:53 | 显示全部楼层
    wai1216 发表于 2022-2-10 12:59
    有空写了个完整调用
    仅供参考

    试了一下,用软件里面的N,调用函数CryptoPP::Lucas计算出来的数据一样,但用自定义生成的N,和软件对不上,不知道哪里出问题了

    点评

    大概你用的是10 10会比之前的版本加了点东西 可以玩下之前的版本以及对比下  详情 回复 发表于 2022-2-10 18:12
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2022-2-10 18:12:28 | 显示全部楼层
    wangwei628 发表于 2022-2-10 17:15
    试了一下,用软件里面的N,调用函数CryptoPP::Lucas计算出来的数据一样,但用自定义生成的N,和软件对不 ...

    大概你用的是10
    10会比之前的版本加了点东西
    可以玩下之前的版本以及对比下

    点评

    好的,多谢了  详情 回复 发表于 2022-2-10 18:58
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-31 09:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2022-2-10 18:58:58 | 显示全部楼层
    wai1216 发表于 2022-2-10 18:12
    大概你用的是10
    10会比之前的版本加了点东西
    可以玩下之前的版本以及对比下

    好的,多谢了

    点评

    其实就是这 [mw_shl_code=text,true]CODE:004A367B 0F B7 57 30 movzx edx, word ptr [edi+30h] CODE:004A367F 83 C2 02 add edx, 2 CODE:004  详情 回复 发表于 2022-2-10 19:19
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2022-2-10 19:19:45 | 显示全部楼层
    本帖最后由 wai1216 于 2022-2-10 19:36 编辑

    其实就是这
    [Plain Text] 纯文本查看 复制代码
    CODE:004A367B 0F B7 57 30                             movzx   edx, word ptr [edi+30h]
    CODE:004A367F 83 C2 02                                add     edx, 2
    CODE:004A3682 83 EA 5D                                sub     edx, 5Dh

    记软件中的n倒序后首地址为edi
    [edi + 0x30] = 0x5D
    0x5D + 0x2 - 0x5D = 0x2

    导致如果想通用 那么生成的n对应这位也要是0x5d
    或者版本为10的时候 需要将这里也patch了

    还有就是存放在代码段的n也是存在修正逻辑的

    点评

    多谢表哥,知道了N在加密的过程中有校验,替换1字节N的加密的结果是一样的,再次感谢  详情 回复 发表于 2022-2-10 21:00
    了解了,多谢表哥指点  详情 回复 发表于 2022-2-10 19:38
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-31 09:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    发表于 2022-2-10 19:38:55 | 显示全部楼层
    wai1216 发表于 2022-2-10 19:19
    其实就是这
    [mw_shl_code=text,true]CODE:004A367B 0F B7 57 30                             movzx   e ...

    了解了,多谢表哥指点
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

     楼主| 发表于 2022-2-10 21:00:49 | 显示全部楼层
    wai1216 发表于 2022-2-10 19:19
    其实就是这
    [mw_shl_code=text,true]CODE:004A367B 0F B7 57 30                             movzx   e ...

    多谢表哥,知道了N在加密的过程中有校验,替换1字节N的加密的结果是一样的,再次感谢
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表