公钥密码算法RSA实验C语言,实验四 公钥密码算法RSA.pdf

实验四 公钥密码算法RSA

1、目的

使学生认识理解公钥密码算法的基

本原理:认识它和对称算法的基本

区别和数学基础知识,掌握RSA的

算法过程。

2、环境

PC 1 台、VC60

3、预备知识

1.RSA算法过程

1.产生钥对(key pair)

1-1.找出3个数:p,q,r或u;p,

q 是 两 个 相 异 的 质 数 ,

第 1页

gcd[r ,(p-1)(q-1)] 1. 再找出其

逆元 r-1≡u% (p-1)(q-1), 即使

得 ru ≡1 % (p-1)(q-1)。u 一定

存在 (可逆元条件定理)。(反函数

存在性)

(32位域的算法演示).

1-2.计算 n pq。销毁p, q 。

1-3.公开数偶(u,n)为公钥。(r,u

是可以互换的)

1-4.秘管数偶 (r, n)为私钥。

2.编码 (RSA加密)

若资料为 Y, 将其看成是一个大整

数, 对于ASCII字串可以看成是

256进制的大整数。假设 Y < n,

如果 Y > n 的话, 就将 Y 按n

第 2页

分组长度进行分组, 则每一分组均

小于 n, 然后分段编码, 计算 Y

I’ ≡ Y i^u mod n

3.解码 (RSA解密)

计算 Y I’’≡ Y I’^r% pq, 解码完

毕。

4、方法和步骤

(1)请根据算法的描述和你对算法

过程的理解,选用一种编程语言C,

C++,Java,Pascal来实现RSA算法,

//以学号右4位为明文,

//以姓名全拼字串中的最左字符的

ASCII码值+128的值为起点寻找最

近的素数为P。

第 3页

//以姓名全拼字串中的最右字符的

ASCII码值的值为起点寻找最近的

素数为Q。

//u 17,如果u与欧拉值不互质则,

比u值大的下一相邻19素数赋给u;

依此类推;

//计算r;来构造RSA算法;并加解

密。将验证过程写于报告上。

如图所示:

示例1

输入r:启动RSA(32bit)加密;以时

钟为随机种子产生素数!

输入l:实验结果验证,RSA(32bit)

加密!

输入s:实验结果验证,RSA(32bit)

第 4页

签名!

输入h:获得命令帮助!

输入e:退出程序!

请输入指令:l

Please InputyourNameString(小

写):tanwenxue

pchar 116;字符值t

qchar 101;字符值e

116+128 244;找到素数p 251

从101起:找到素数q 101;1-10有无

非平凡因子;

公钥模:101*251 25351

φ((p-1)(q-1)) 25000;

已知公钥指数u 17;

17r≡1 modφ((p-1)(q-1))

第 5页

根据欧拉定理:如gcd(a,n) 1

A^φ(n) ≡1 mod n;

Gcd(17,25000) 1;可用欧拉定理;

求素因子分解式:

5 3

25000 5*2 ;

φ(25000) 25000* (1/2)(4/5)

10000;

-1 9999

17 r 17 mod 25000

7353(可用计算器)

Please Input 明文(<10000 的整

数!,4位十进制数.): 123

17*7353%25000 1

plaintext 123

ciphertext 7079

RSA公钥:u 17 n(pq) 25351

第 6页

RSA私钥:r 7353 n(pq) 25351

decryptciphertext 123

正确加解密!

请输入指令:s

Please your Name String is (小

写):tanwenxue

pchar 116;字符值t

qchar 101;字符值e

找到素数p 251

找到素数q 101

Please Input 明文(<10000 的整

数!,4位十进制数.): 123

17*7353%25000 1

plaintext

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值