#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