密码学课程设计-刘欣凯(5)

2019-04-09 08:26

密码学课程设计

2.4运行结果

20

密码学课程设计

实验三 Rabin加密和签名

3.1 Rabin加密解密概述

3.2 程序与算法

int mod_exp(int a,int b,int n) {

int tmp=a%n,ans=1; for(;b>0;b>>=1) { if(b&1)

{ans*=tmp;ans%=n;} tmp*=tmp;tmp%=n; }

return ans; }

int extended_euclid(int a, int b, int &x, int &y) {

int d; if(b == 0)

21

密码学课程设计

{x = 1; y = 0; return a;}

d = extended_euclid(b, a % b, y, x); y -= a / b * x; return d; }

int chinese_remainder(int len) { int i, d, x, y, m, n, ret; ret = 0; n = 1; for(i=0; i < len ;i++) n *= w[i]; for(i=0; i < len ;i++) {

m = n / w[i];

d = extended_euclid(w[i], m, x, y); ret = (ret + y*m*b[i]) % n; }

return (n + ret%n) % n; }

int main() {

int n,i; int p,q,M,N; int M1,M2,M3,M4;

cout<<\输入大素数p,q\

cin>>p>>q;

cout<<\输入需加密明文M\ cin>>M;

N = p*q; int C = (M*M)%N; cout<<\

22

密码学课程设计

int a1 = mod_exp( (int)C,((p+1)/4), p); int a2 = -(mod_exp( (int)C,((p+1)/4), p)); int b1 = mod_exp( (int)C,((q+1)/4) , p); int b2 = -(mod_exp( (int)C,((q+1)/4) , p)); b[0] = a1; b[1] = b1; w[0] = p; w[1] = q;

M1 = chinese_remainder(2);

b[0] = a1; b[1] = b2; w[0] = p; w[1] = q;

M2 = chinese_remainder(2);

b[0] = a2; b[1] = b1; w[0] = p; w[1] = q;

M3 = chinese_remainder(2);

b[0] = a2; b[1] = b2; w[0] = p; w[1] = q;

M4 = chinese_remainder(2);

3.3 运行结果

23

密码学课程设计

实验四 公钥密码算法RSA

24


密码学课程设计-刘欣凯(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:共和中学校志

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: