c/c++开发分享如何处理C中的大量数字

我正在用C编写RSA加密算法。我不打算在任何地方投入生产,主要是因为我可以扩展我对加密的理解。

我如何处理RSA产生的大量数字? 即使使用像103这样的相对较小的私钥进行解密,我仍然有处理这样的事情的问题:

67 ^ 103 mod 143 =(1.21816096336830017301951805581 x 10 ^ 188)mod 143

存储多个大小的最佳方法是什么? 有没有办法使用标准库? 。

    错误的做法。 67^103 mod 143不需要先计算67^103

    计算循环中的modulo ,一次计算1位指数。

     uint32_t powmod(uint32_t base, uint32_t expo, uint32_t mod) { // % mod need only for the cases expo==0, mod<=1 uint32_t y = 1u % mod; while (expo) { if (expo & 1u) { y = ((uint64_t) base * y) % mod; } expo >>= 1u; base = ((uint64_t) base * base) % mod; } return y; } int main(void) { printf("%lu",(unsigned long) powmod(67, 103, 143)); } 

    产量

     89 

      以上就是c/c++开发分享如何处理C中的大量数字相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545871.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注