实验四 公钥加密算法实验(改)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四公钥加密算法实验
1、实验目的
掌握消息RSA密钥生成和加密算法的原理。
2、实验环境
硬件:ZXBee CC2530 节点板2 块、USB 接口的CC2530 仿真器,PC 机;
软件:Windows 7/Windows XP、IAR 集成开发环境、串口监控程序。
3、实验原理
RSA算法的关键是生成公钥私钥对。本实验采用了一个简化的算法,通过一个给定的seed(实验组号)搜索两个不同的素数(100以内),并计算出公钥PubliceKey(e,n)和私钥PrivateKey(d,n)。
RSA加/解密公式为C=P e mod n和P=C d mod n,其中的幂指数运算速度慢,可采用下面的公式进行转换:
C=P e mod n=((...((P*P mod n)*P mod n)*P mod n)... ...)*P mod n
此外,RSA算法的明文和密文均为0到n-1之间的整数,而一般传送消息的长度单位为字节(8 bits),n 的大小与消息长度难以匹配。因此,本实验采用如下的特殊处理方法:
(1)令选定公钥/私钥的n值小于65536,即n值小于16bits的二进制。
(2)将消息的每个字节(8bits)作为一个明文块。
(3)每个明文块进行RSA加密后,得到的密文块为16bits,用2个字节存放。即密文的长度为明文的2倍。
(4)接收方收到的密文,按2个字节为一个密文块进行RSA解密,解密后的结果只保留低8bits。
4、实验步骤
1)本实验程序可在《指导书》4.4节程序上进行修改,可节约时间。信道编号不用更改。
5
代码:
6)修改接收数据函数rfRecvData()。接收节点不断接收各个发送节点发送的信息,先判断数据的第一个字节是不是本站点,如果是再进行解密。通过串口显示结果。
5、实验报告要求
实验的结果注意观察下列情况,并对比(截图保存)。
1)发送节点发送密文,接收节点接收后显示密文,对应步骤6。
2)发送节点发送密文,接收节点接收后解密并显示明文,对应步骤8。
请回答以下问题:
1)为什么密文的长度与明文的长度不一致?
2)请写出本小组所用的公钥和私钥的值,包括e,d,n的值。并针对字符'G',列写加密公式和解密公式,手工验算密文是否与步骤6的串口显示结果相同。(字符'G'的ASCII码为71)3)密钥分配问题。本实验例程里面,发送方和接收方均已知公钥和私钥。然而在实际应用中,发送方和接收方针对公钥和私钥应当如何应用才能保证信息的机密性?(提示,发送方是不可能产生公钥或者私钥的,应该在通信前提前拥有接收方的公钥。)
4)实际应用中为什么不将RSA算法直接用于消息加密?