1 Star 0 Fork 3

cofface/Qt-Crypto

forked from realhuhu/Qt-Crypto 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
utils.h 855 Bytes
一键复制 编辑 原始数据 按行查看 历史
realhuhu 提交于 2023-04-16 15:47 . RSA ElGamal
struct {
qulonglong x, y;
} g; // 全局变量
//扩展欧几里得算法求最大公约数,计算ax+by=gcd(a,b)的x、y和gcd(a,b)
qulonglong extGCD(qulonglong a, qulonglong b) {
if (b == 0) {
g.x = 1;
g.y = 0;
return a;
}
qulonglong ret = extGCD(b, a % b);
qulonglong t = g.x;
g.x = g.y;
g.y = t - a / b * g.y;
return ret;
}
//求a^-1 (mod m),若不存在逆元则返回1
qulonglong modReverse(qulonglong a, qulonglong m) {
qulonglong gcd = extGCD(a, m);
if (gcd != 1) {
return 0;
} else {
return (g.x + m) % m;
}
}
// 求x^y % mod 的值
qulonglong modPow(qulonglong x, qulonglong y, const qulonglong mod) {
qulonglong res = 1;
while (y) {
if (y % 2) res = (res * x) % mod;
x = (x * x) % mod;
y /= 2;
}
return res;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/cofface/Qt-Crypto.git
git@gitee.com:cofface/Qt-Crypto.git
cofface
Qt-Crypto
Qt-Crypto
main

搜索帮助