原理不再细述, 下面是简单的实现,没有使用比较大的质数, 主要是用C++不想写大数…
支持对中文的加密
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX_N = 1000;
wifstream wfin;
wofstream wfout;
//locale loc("zh_CN.UTF-8"); //Linux 下需要
//拓展欧几里得 已知a,b 求满足ax + by = gcd(a, b) 的一组解
int exgcd(int a, int b, int &x, int &y)
{
if (b == 0){
x = 1;
y = 0;
return a;
}
int ans = exgcd(b, a % b, x, y);
int tmp = x;
x = y;
y = tmp - a / b * y;
return ans;
}