如何对大整数值进行模化


    #include <string>
    #include <iostream>
    using namespace std;
    #include "md5.h"
    int main()
    {
        MD5 md5;
        string message = "secretU";
        char arr[message.size()];
        strcpy(arr, message.c_str());
        //encrypting the message "secretU", it will return a string of hexadecimals
        string result = md5.digestString(arr); 
        //print the result of the encrypted message.
        cout << result; 
        return 0;
    }

以十六进制为单位的输出结果

1853c517b0e1095a341210f1a4b422e6

一旦我尝试转换为十进制,它需要 125 位大小?但是,无符号长长最多只能包含 64 位,有没有办法存储这个长整数,以便我可以用我想要的值对其进行取模

将十六进制转换为十进制

32336430049777443053240099092194140902

您可以手动完成,也可以使用提供大整数的库,例如 https://mattmccutchen.net/bigint/

通过将模分解成碎片来取模..例如,假设您想取 37^11 mod 77 的模数,其中 37^11 给出答案 1.77917621779460E17 所以得到这个 .. 取一些小数字代替给出整数值的 11.. 将其分解成碎片...37^11 mod 77 可以写为 (37^4 x 37^4 x 37^3 mod 77),所以求解为..{(37^4 mod 77)(37^4 mod 77)(37^3 mod 77)} mod 77.所以,一般来说 xy mod n = {(x mod n)(y mod n)} mod n

相关内容

  • 没有找到相关文章

最新更新