#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位大小?但是,无符号long long最多只能包含64位,有没有办法存储这个长整数,以便我可以用我想要的值 modulo 呢?
将十六进制转换为十进制
32336430049777443053240099092194140902
答案 0 :(得分:2)
您可以手动执行此操作,也可以使用提供https://mattmccutchen.net/bigint/
等大整数的库答案 1 :(得分:2)
通过将模数分成几块来取模数。例如,你想取 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