实验四 公钥密码算法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