S[1]=1,…… ,S[255]=255。同时对密钥key[key_len]的进行填充到随机序列密钥rc4key[256]中,(key_len为key的字节长度,且不大于256)。循环重复用key,直到rc4key的所有字节都被赋值。然后根据密钥re4key去对S盒进行变换。这些预操作可概括如下:
//S盒先初始化为s[0]=0,s[1]=1...s[255]=255
for(i = 0; i < 255; i++)
S[i]=i;
//初始化序列化密钥
for(i = 0; i < 256; i++) { }
for( j = 0, i = 0; i < 256; i++) { }
j = (rc4key[i] + S[i] + j) % 256;
swap(&S[i], &S[j]); //交换S[i]和S[j]的数值 j = i % key_len ; rc4key[i] = key_data[j];
//根据密钥rc4key,填充S盒
矢量S一旦完成初始化,输人密钥就不再被使用.密钥流的生成是从s[0]到S[255],对每个S[i],根据当前S的值,将S[i]与S中的另一字节置换.当S[255]完成置换后,操作继续重复,从S[0]开始。操作如下:
//生成随机序列密钥
for(counter = 0; counter < buffer_len; counter++)
{ }
i = (i + 1) % 256; j = (S[i] + j) % 256; swap(&S[i], &S[j]);
t = (S[i] + S[j]) % 256; rc4key[counter] = S[t];
这两个过程使用同样的函数即可,加密中,将k的值与下一明文字节异或;解密中,将k的值与下一密文字节异或。操作如下:
//将缓冲区数据和随机系列密钥进行异或,则可进行加密或者解密
for(i = 0; i < buffer_len; i++)
result[i] = buffer_data[i] ^ rc4key[i];
程序流程图
图1.1
RC4流程图
3.运行结果
首先,输入密钥cryption,输入明文Idolikethisbook,实验结果如图所示。
加密结果1
如果密钥不变,明文变为idolikethisbook,实验结果如图所示。可以看到,当密钥不变,明文做一小部分改变的时候(第一位由‘I’改变为‘i’),只有对应位的密文发生改变。
加密结果2
[问题讨论]
1. 在DES算法中有哪些是弱密钥?哪些是半弱密钥?
2. 改变明文或密钥中的一个比特值可能影响AES值中的多少比特?
3.分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。 回答问题 答
1、弱密钥:DES在16迭代中分别使用不同的子密钥来确保DES的安全性,如果存在这样一个秘钥,尤其产生的子密钥是相同的,则称其为弱密钥。即K1=K2=…=K16
半弱密钥:由K产生的子密钥K1,K2,…,K16中存在着重复但是不是完全相同,则称为半弱密钥
2、最多影响128比特 3、
实验二 公钥密码算法实验
[实验目的]
1.掌握密码学中常用的公钥密码算法RSA、ECC的算法原理。 2.掌握RSA、ECC的算法流程和实现方法。
[实验预备]
1.RSA和ECC密码系统所基于的数学难题是什么? 2.RSA和ECC算法的基本原理。
3.公钥密码系统可以取代对称密码系统吗? 4.RSA和ECC的实现过程。
[实验内容]
1. 分析RSA、ECC的实现过程。 2. 用程序设计语言将算法过程编程实现 3. 完成数据的加密运算和解密运算 输入明文:security 输入密钥:cryption 对ASCII码进行加密和解密。
[实验步骤] 1. 预习RSA、ECC算法。 2. 了解大素数的生成、大数的运算、公钥、私钥的生成。 3. 写出算法流程,用程序设计语言将算法过程编程实现。 4. 输入指定的明文和密钥进行实验,验证结果。 写出所编写程序的流程图和运行界面、运行结果。
一、RSA 算法
1. RSA算法及原理
(1)选取长度相等的两个大素数p 和q,计算其乘积: n = pq
然后随机选取加密密钥e,使e 和(p–1)(q–1)互素。 最后用欧几里德扩展算法计算解密密钥d,以满足 ed = 1(mod(p–1) ( q–1)) 即d = e–1 mod((p–1)(q–1)) e 和n 是公钥,d 是私钥
(2)加密公式如下: ci = mi^e(mod n)
(3)解密时,取每一密文分组ci 并计算: mi = ci^d(mod n)
Ci^d =(mi^e)^d = mi^(ed) = mi^[k(p–1)(q–1)+1 ] = mi mi^[k(p–1)(q–1)] = mi *1 = mi (4)消息也可以用d 加密用e 解密 2. RSA算法加密解密过程
发送者 B 将明文信息加密后变成密文信息发送给接受者A,A解密。 (1) 加密过程。发送者 B 将作如下事情: a. 得到确认的接受者 A 的加密公钥公告栏等处得到)
b. 将明文信息表示为整数 c. 计算整数
d. 将整数 c 转换成密文信息.
f. 将密文信息发送给 A. (可以在公开通道中传递, 在不知道解密私钥的情况下第三者无法破解密文信息)
(2) 解密过程。为了将密文信息恢复为明文信息, 接受者 A 将作如下事情: a. 将密文信息转换成整数c. b. 运用解密私钥
恢复整数
.
c. 将整数 c 转换成明文信息. 3.RSA算法实现
。(要求以最有效的方式来表达信息)
(从认证中心或电话本或信息
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育中南大学现代密码学实验报告 (3)全文阅读和word下载服务。
相关推荐: