一个简单的公私钥加密算法
来源:互联网 发布:淘宝商品主图素材 编辑:程序博客网 时间:2024/05/16 12:01
#include <ctime>
#include <iostream>#include <cstdlib>using namespace std;struct public_key{int n;int x;};struct private_key{int p;int q;};int power(int x,int y,int m)//cal x^y%m{if(y==0)return 1%m;int ret=x%m;for(int i=0;i<y-1;i++)ret=(ret*x)%m;return ret;}int get_x(int p,int q){for(int i=1;i<p*q;i++){if (power(i,(p-1)/2,p)==p-1&&power(i,(q-1)/2,q)==q-1){cout<<"get x:"<<i<<endl;return i;}}}void get_key(public_key* bk,private_key* rk,int p,int q){bk->n=p*q;bk->x=get_x(p,q);rk->p=p;rk->q=q;}int get_random(int n){srand(unsigned(time(0)));int ret=rand()%1000;int max,min;if(ret>=n){max=ret;min=n;}else {max=n;min=ret;}while(min){int tmp=max%min;if(tmp==1)return ret;max=min;min=tmp;}}int encrypt(int src,int n,int x){int y=get_random(n);cout<<"get y:"<<y<<endl;return (power(y,2,n)*power(x,src,n))%n;}int decode(int src,int p,int q){int cp=power(src,(p-1)/2,p);int cq=power(src,(q-1)/2,q);cout<<"c/p="<<cp<<endl;cout<<"c/q="<<cq<<endl;if(cp==1&&cq==1) return 0;else return 1;}int main(){public_key* bk=new public_key;private_key* rk=new private_key;int p=613,q=827;get_key(bk,rk,p,q);int src=1;cout<<"1:\n";int enc=encrypt(src,bk->n,bk->x);cout<<"encrypt:"<<enc<<endl;cout<<"m':"<<decode(enc,rk->p,rk->q)<<endl;src=0;cout<<"0:\n";enc=encrypt(src,bk->n,bk->x);cout<<"encrypt:"<<enc<<endl;cout<<"m':"<<decode(enc,rk->p,rk->q)<<endl;return 0;}
阅读全文
0 0
- 一个简单的公私钥加密算法
- 一个简单的加密算法(注册码)
- 一个有意思的简单的SAS加密算法
- 自己设计的一个简单高速加密算法
- 菜鸟求助:一个简单的数字加密算法
- 一个简单的异或加密算法
- 一个简单且安全的文件加密算法
- [python]rsa加密算法的一个简单实现
- FreeBSD添加一个新用户并允许其使用ssh通过公私钥的方式登录
- 一个简单的加密算法(通用于java和OC的简单加密算法)
- 浅淡ADB的公私钥认证机制
- openssl生成证书,公私钥的方法
- 浅淡ADB的公私钥认证机制
- pfx证书提取公私钥的方法
- pfx证书提取公私钥的方法
- 浅淡ADB的公私钥认证机制
- gitlab公私钥连接的解决方案,坑。。。
- 总结:从KeyStore中提取公私钥并实现RSA加密算法
- Leetcode-Generate Parentheses(递归)
- Cloud Control 12c Installation 错误处理 Checking swap space: 0 MB available, 150 MB required. Failed
- PAT 甲级 1017. Queueing at Bank
- [JZOJ5134][SDOI省队集训2017]三元组
- web性能
- 一个简单的公私钥加密算法
- Houdini学习 —— 使用音频驱动几何体变换之信号处理
- 结构型模式之装饰模式实现
- Xbanner
- 如何学习JAVASE
- 《JAVA与模式》之策略模式
- BZOJ 4569 [Scoi2016] 萌萌哒
- 术语说明
- 1120. Friend Numbers (20)