当前位置:文档之家› 中南大学现代密码学实验报告

中南大学现代密码学实验报告

中南大学现代密码学实验报告
中南大学现代密码学实验报告

现代密码学实验报告

学生姓名代巍

学号0909121615

专业班级信息安全1201

指导教师段桂华

学院信息科学与工程学院

完成时间2014年5月

实验一对称密码算法实验

[实验目的]

1.掌握密码学中经典的对称密码算法DES、AES、RC4的算法原理。

2.掌握DES、AES、RC4的算法流程和实现方法。

[实验预备]

1.DES算法有什么特点?算法中的哪些结构保证了其混淆和扩散的特性?

2.AES算法的基本原理和特点。

3.流密码RC4的密钥流生成以及S盒初始化过程。

[实验内容]

1. 分析DES、AES、RC4、SHA的实现过程。

2. 用程序设计语言将算法过程编程实现。

3. 完成字符串数据的加密运算和解密运算

输入明文:Idolikethisbook

输入密钥:cryption

[实验步骤]

1. 预习DES、AES、RC4算法。

2. 写出算法流程,用程序设计语言将算法过程编程实现。

3. 输入指定的明文、密钥进行实验,验证结果。

4. 自己选择不同的输入,记录输出结果。

写出所编写程序的流程图和运行界面、运行结果。

一、DES算法

1.DES算法及原理

DES密码实际上是Lucifer密码的进一步发展。它是一种采用传统加密方法的区组密码。它的算法是对称的,既可用于加密又可用于解密。美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的通常称为DES密码算法要求主要为以下四点:提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础实现经济,运行有效,并且适用于多种完全不同的应用。

目前在这里,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,

以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS 间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key 去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。

DES算法流程图

子密钥产生流程图

2.DES算法加密解密过程

(1)加密过程。

a.初始置换。

DES的第一阶段包括64位分组的置换,改变每个分组中位的顺序。术语置换使用其严格的数学意义;只改变了顺序。这64位数据现在被分成两半:L0(左半部分)和R0(右半部分)。下标0说明是原始的数据。在DES算法第二阶段的每次循环后,这些下标加1。

b.循环移位(16次)

一种根据密钥,并且依赖于表格的算法。这种操作通常被称为数据移位。这个算法要重复16次,但由于每次移位都使用密钥的不同子分组,因此每次移位的操作各不相同。密钥的子分组由另一组表格和表格的移位算法来确定。在每次循环以后,L(左半部分)和R(右半部分)的下标依次加一。第16次循环的结果被称为预输出。

c.逆置换

DES的最后一个阶段包括64位分组的置换,改变每个分组中位的顺序,这

与第1阶段的操作类似。这次置换的输出结果就是密文。

(2)解密过程

DES的解密过程和加密过程相同,只是在解密过程中将子密钥的使用顺序颠倒。

3. DES算法C++实现

模块化设计(囿于篇幅,举几个代表的例子)

(1) 二进制转换(将输入的字符串转化为比特数组)

void erjinzhi(char z[8],int *q)

{

char ch;

int i,j,a=7;

for(i=0;i<8;i++)

{

ch=z[i];

for(j=0;j<8;j++)

{

*(q+a)=ch%2;

ch=ch/2;

a--;

}

a=a+16;

}

for(i=0;i<=63;i++)

{

if(i%8==0) printf( " ");

printf("%d",*(q+i));

}

printf("\n");

}

(2)密钥生成时 C D移位

void LS_yiwei(int (*p)[28],int i)

{

int j;

if(i==1||i==2||i==9||i==16)

{

for(j=0;j<=27;j++)

{

if(j==27)

*(*(p+i)+j)=*(*(p+i-1)+0);

else

*(*(p+i)+j)=*(*(p+i-1)+j+1);

}

}

else

{

for(j=0;j<=27;j++)

{

if(j==26)

*(*(p+i)+j)=*(*(p+i-1)+0);

else if(j==27)

*(*(p+i)+j)=*(*(p+i-1)+1);

else

*(*(p+i)+j)=*(*(p+i-1)+j+2);

}

}

}

(2)密文生成模块

void miwen(int *ip_1)

{

int i,j,a,c,b,x[8];

for(i=0;i<=7;i++)

{

a=i*8;

x[i]=0;

for(j=7;j>=0;j--)

{

c=*(ip_1+a);

b=pow(2,j);

x[i]=x[i]+b*c;

miwens[i]=x[i];//把密文copy在miwens数组中为了输出使用

a++;

}

}

// printf("密文为:");

for(i=0;i<=7;i++)

{

a=x[i]%127;

printf("%c",(char)(a));

}

printf("\n");

}

4. 实验结果

二、AES算法

1.AES算法简介

AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用 128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。

2.算法实现

以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节代换ShiftRows行移位、MixColumns、列混合以及AddRoundKey密钥加。

void Cipher()

{

int i,j,round=0;

// 把明文赋值到状态数组中

for(i=0;i<4;i++)

for(j=0;j<4;j++)

state[j][i] = in[i*4 + j];

// 先与初始轮密钥相加

AddRoundKey(0);

// 第一轮至(Nr-1)轮的迭代运算,第Nr轮不用进行列混合运算

for(round=1;round

{

SubBytes(); //字节代换

ShiftRows(); //行移位

MixColumns(); //列混合

AddRoundKey(round); //密钥加

}

SubBytes();

ShiftRows();

AddRoundKey(Nr);

// 加密结束,将机密结果填入数组out中以便输出

for(i=0;i<4;i++)

for(j=0;j<4;j++)

out[i*4+j]=state[j][i];

}

解密函数的流程和加密函数是一致的,只是对于行变换、列变换、以及相关s盒子为加密的逆过程。

字节代换(SubBytes)字节代换是非线形变换,独立地对状态的每个字节进行。

行移位(ShiftRows)是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关。

列混合(MixColumns)是将状态阵列的每个列视为多项式,再与一个固定的多项式c(x)进行模x4+1乘法。Rijndael的设计者给出的c(x)为(系数用十六进制数表示):c(x)=‘03’x3+‘01’x2+‘01’x+‘02’。

密钥加(AddRoundKey)是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。

程序流程图

AES流程图

3.实验结果

首先,输入密钥cryption,输入明文Idolikethisbook,实验结果如图所示。

实验结果

三、RC4算法

1.算法简介

RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。首先,用从1到256个字节的可变长度密钥初始化一个256个字节的状态盒S[256]。然后,通过S盒子对密钥按字节进行变换。最后可以得到变换后的密钥。对于加密,只要让密钥按字节与明文进行异或。而解密,只要让密钥按字节与密文进行异或。

2.算法实现

开始时,S中元素的值被置为按升序从0到255,即S[0]=0,

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++)

{

j = i % key_len ;

rc4key[i] = key_data[j];

}

//根据密钥rc4key,填充S盒

for( j = 0, i = 0; i < 256; i++)

{

j = (rc4key[i] + S[i] + j) % 256;

swap(&S[i], &S[j]); //交换S[i]和S[j]的数值

}

矢量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算法实现

C语言源程序:

#include

int candp(int a,int b,int c) //数据处理函数,实现幂的取余运算

{ int r=1;

b=b+1;

while(b!=1)

{

r=r*a;

r=r%c;

b--;

}

printf("%d\n",r);

return r;

}

int fun(int x,int y) //公钥e 与t 的互素判断

{

int t;

while(y)

{

t=x;

x=y;

y=t%y;

}

if(x == 1)

return 0; //x 与y 互素时返回0

else

return 1; //x 与y 不互素时返回1

}

void main()

{

int p,q,e,d,m,n,t,c,r;

printf("请输入两个素数p,q: ");

scanf("%d%d",&p,&q);

n=p*q;

printf("计算得n 为%3d\n",n);

t=(p-1)*(q-1); //求n 的欧拉数

printf("计算得t 为%3d\n",t);

printf("请输入公钥e: ");

scanf("%d",&e);

if(e<1||e>t||fun(e,t))

{

printf("e 不合要求,请重新输入: "); //e<1 或e>t 或e 与t 不互素时,重新输入scanf("%d",&e);

}

d=1;

while(((e*d)%t)!=1) d++; //由公钥e 求出私钥d

printf("经计算d 为%d\n",d);

printf("加密请输入1\n"); //加密或解密选择

printf("解密请输入2\n");

scanf("%d",&r);

switch(r)

{

case 1: printf("请输入明文m: "); //输入要加密的明文数字

scanf("%d",&m);

c=candp(m,e,n);

printf("密文为%d\n",c);break;

case 2: printf("请输入密文c: "); //输入要解密的密文数字

scanf("%d",&c);

m=candp(c,d,n);

printf("明文为%d\n",m);break;

}

}

4.程序运行结果及相关说明

主函数实现求N 的欧拉数、由公钥求解私钥、加密解密选择以及相应的密文明文输出。子函数candp 实现加密解密时的求幂取余运算,fun 实现e 与t 的互素判断,已验证e 是否符合要求。程序主体参考了网上的相关RSA 算法程序,我对其中e 的合法性判断、主函数实现的顺序以及相关提示信息做了补充与修改并加上了注释,这样程序可读性更强,运行时

更容易操作,思路也更加严密。

当P=43, q=59 时,对134 进行加密,运行结果如下:

第一次取e 为15,与t 不互素,提示需重新输入,输入13 后,便可以进行正确操作。由于int 型变量为十六位,因此n 最大只能小于65536,此程序只是对RSA 算法的入门,无法实现达到安全要求的数据位数。

二、ECC算法

1.ECC算法内容描述(问题域描述)

ECC(Elliptic Curves Cryptography)加密算法是一种公钥加密算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。近年来,人们对ECC的认识已经不再处于研究阶段,开始逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的

原理:ECC 公钥密码系统,椭圆曲线用于加密

找到一个难题:

考虑等式Q=kP,其中Q、P 属于Ep(a,b),k

已知k 和P,计算Q,是容易的

已知Q 和P,计算k,是困难的

选择Ep(a,b)的元素G,使得G 的阶n 是一个大素数

G 的阶是指满足nG=O 的最小n 值

秘密选择整数r,计算P=rG,然后

公开(p,a,b,G,P),P 为公钥

保密r

加密M:先把消息M 变换成为Ep(a,b)中一个点Pm

然后,选择随机数k,计算密文Cm={kG,Pm+kP)

如果k 使得kG 或者kP 为O,则要重新选择k.

解密Cm: (Pm+kP)-r(kG)=Pm+krG-rkG=Pm

加密信息有扩张

2.算法加密解密过程

加密过程

1.A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G

2.A选择一个私钥k,并生成公钥K=kG

3.A将Ep(a,b)和k,G发送给B

4.B收到后将明文编码到Ep(a,b)上一点M,并产生一个随机数r

5.B计算点C1=M+rK,C2=rG

6.B将C1,C2传给A

7.A计算C1-kC2=M+rkG-krG=M

8.A对M解码得到明文

签名验签流程

1.A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G

2.A选择一个私钥k,并生成公钥K=kG

3.A产生一个随机数r,计算R(x,y)=rG

4.A计算Hash=SHA(M),M‘=M(modp)

5.A计算S=(Hash+M'k)/r(modp)

6.B获得S和M',Ep(a,b),K,R(x,y)

7.B计算Hash=SHA(M),M'=M(modp)

8.B计算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),

若R'=R,则验签成功。

以上加解密和签名验签流程只是一个例子,具体应用时可以利用K=kG这一特性变幻出多种加解密方式。

3.运行结果

[问题讨论]

1. 总结算法的特点,分析算法的安全性;

2. 分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。

回答问题

答:1、RSA算法:既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。但RSA的安全性一直未能得到理论上的证明。RSA的安全性依赖于大数分解。

ECC算法:ECC基于的是椭圆曲线上的离散对数问题, 其位数不用太高,速度反而快些。椭圆曲线其实可能比RSA更复杂,但其安全性比较高,离散对数问题对于计算机而言几乎不可解。

2、

实验三 SKEY协议设计实验

[实验目的]

1.掌握身份认证协议的原理和基本思想。

2.掌握SKEY协议的机制和实现方法。

[实验预备]

1.SKEY协议的作用。

2.SKEY协议的安全性分析。

3.SKEY协议的实现过程。

[实验内容]

1. 分析SKEY协议的实现过程。

2. 用程序设计语言将算法过程编程实现。

3. 演示SKEY协议的身份鉴别过程。

[实验步骤]

1. 预习SKEY协议的机制。

2. 选择和实现相应的摘要算法MD5或SHA。

3. 写出算法流程,用程序设计语言将协议过程编程实现。

4. 验证SKEY协议的身份鉴别过程。

写出所编写程序的流程图和运行界面、运行结果。

一、SKEY协议的原理

SKEY是一种鉴别程序,它依赖于单向函数的安全性。

为了设置系统,输入随机数R,计算机计算f(R), f(f(R)), f(f(f(R)))等等大约100次。调用x1 ,x2 ,x3 ,。。。,x100这些数。计算机打印出这些数的列表,Alice把这些数放入口袋妥善保管,计算机也顺利地在登录数据库中Alice的名字后面存储x101的值。当Alice第一次登录时,她输入她的名字和x100,计算机计算f(x100),并把它和x101比较,如果它们匹配,那么证明Alice身份是真的。然后,计算机用x101代替数据库中的x100。Alice将从她的列表中取消x100。

Alice每次登录时,都输入她的列表中未取消的最后的数xI,计算机计算f(xI),并和存储在它的数据库中的xI+1比较。因为每个数只被用一次,并且这个函数是单向的,所以Eve不可能得到任何有用的信息。同样的,数据库对攻击者也毫无用处。当然,当Alice用完了她的列表上面的数后,她必须重新初始化系统。

现代密码学实验报告

现代密码学 实验报告 学生姓名 学号 专业班级计算机科学与技术指导教师段桂华 学院信息科学与工程学院完成时间2016年4月

实验一密码算法实验 [实验目的] 1.掌握密码学中经典的对称密码算法AES、RC4的算法原理。 2.掌握AES、RC4的算法流程和实现方法。 [实验预备] 1.AES算法的基本原理和特点。 2.流密码RC4的密钥流生成以及S盒初始化过程。 [实验内容] 1. 分析AES、RC4的实现过程。 2. 用程序设计语言将算法过程编程实现。 3. 完成字符串数据的加密运算和解密运算 输入十六进制明文:11223344556677889900AABBCCDDEEFF 输入十六进制密钥:13579BDF02468ACE1234567890ABCDEF [实验步骤] 1. 预习AES、RC4算法。 2. 写出算法流程,用程序设计语言将算法过程编程实现。 3. 输入指定的明文、密钥进行实验,验证结果。 4. 自己选择不同的输入,记录输出结果。 写出所编写程序的流程图和运行界面、运行结果。 一、AES算法 1、AES算法简介 AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。 2、算法实现及流程 以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节替换SubBytes、移位行运算ShiftRows、混合列运算MixColumns、以及轮秘钥加密AddRoundKey。

1密码学-DES实验报告

南京信息工程大学实验(实习)报告实验(实习)名称对称密码实验(实习)日期得分指导教师 系计软院专业网络工程年2011 班次 1 姓名学号20111346026 一.实验目的 1.理解对称加密算法的原理和特点 2.理解DES算法的加密原理 二.实验内容 第一阶段:初始置换IP。在第一轮迭代之前,需要加密的64位明文首先通过初始置换IP 的作用,对输入分组实施置换。最后,按照置换顺序,DES将64位的置换结果分为左右两部分,第1位到第32位记为L0,第33位到第64位记为R0。 第二阶段:16次迭代变换。DES采用了典型的Feistel结构,是一个乘积结构的迭代密码算法。其算法的核心是算法所规定的16次迭代变换。DES算法的16才迭代变换具有相同的结构,每一次迭代变换都以前一次迭代变换的结果和用户密钥扩展得到的子密钥Ki作为输入;每一次迭代变换只变换了一半数据,它们将输入数据的右半部分经过函数f后将其输出,与输入数据的左半部分进行异或运算,并将得到的结果作为新的有半部分,原来的有半部分变成了新的左半部分。用下面的规则来表示这一过程(假设第i次迭代所得到的结果为LiRi): Li = Ri-1; Ri = Li-1⊕f(Ri-1,Ki);在最后一轮左与右半部分并未变换,而是直接将R16 L16并在一起作为未置换的输入。 第三阶段:逆(初始)置换。他是初始置换IP的逆置换,记为IP-1。在对16次迭代的结果(R16 L16)再使用逆置换IP-1后,得到的结果即可作为DES加密的密文Y输出,即Y = IP-1 (R16 L16) 三.流程图&原理图

流程图

DES原理图

杭电密码学DES密码实验报告

课程实验报告 课程密码学实验 学院通信工程学院 专业信息安全 班级14083611 学号14084125 学生姓名刘博 实验名称DES密码实验 授课教师胡丽琴

DES密码实验 一、实验要求: 1、了解分组密码的起源与涵义。 2、掌握DES密码的加解密原理。 3、用Visual C++实现DES密码程序并输出结果。 二、实验内容: 1、1949年,Shannon发表了《保密系统的通信理论》,奠定了现代密码学的基础。他还指出混淆和扩散是设计密码体制的两种基本方法。扩散指的是让明文中的每一位影响密文中的许多位,混淆指的是将密文与密钥之间的统计关系变得尽可能复杂。而分组密码的设计基础正是扩散和混淆。在分组密码中,明文序列被分成长度为n的元组,每组分别在密钥的控制下经过一系列复杂的变换,生成长度也是n的密文元组,再通过一定的方式连接成密文序列。 2、DES是美国联邦信息处理标准(FIPS)于1977年公开的分组密码算法,它的设计基于Feistel对称网络以及精心设计的S盒,在提出前已经进行了大量的密码分析,足以保证在当时计算条件下的安全性。不过,随着计算能力的飞速发展,现如今DES已经能用密钥穷举方式破解。虽然现在主流的分组密码是AES,但DES的设计原理仍有重要参考价值。在本实验中,为简便起见,就限定DES 密码的明文、密文、密钥均为64bit,具体描述如下: 明文m是64bit序列。 初始密钥K是64 bit序列(含8个奇偶校验bit)。 子密钥K1, K2…K16均是48 bit序列。 轮变换函数f(A,J):输入A(32 bit序列), J(48 bit序列),输出32 bit序列。 密文c是64 bit序列。 1)子密钥生成: 输入初始密钥,生成16轮子密钥K1, K2 (16) 初始密钥(64bit)经过置换PC-1,去掉了8个奇偶校验位,留下56 bit,接着分成两个28 bit的分组C0与D0,再分别经过一个循环左移函数LS1,得到C1与D1,连成56 bit数据,然后经过置换PC-2,输出子密钥K1,以此类推产生K2至K16。

现代密码学 学习心得

混合离散对数及安全认证 摘要:近二十年来,电子认证成为一个重要的研究领域。其第一个应用就是对数字文档进行数字签名,其后Chaum希望利用银行认证和用户的匿名性这一性质产生电子货币,于是他提出盲签名的概念。 对于所有的这些问题以及其他的在线认证,零知识证明理论成为一个非常强有力的工具。虽然其具有很高的安全性,却导致高负荷运算。最近发现信息不可分辨性是一个可以兼顾安全和效率的性质。 本文研究混合系数的离散对数问题,也即信息不可识别性。我们提供一种新的认证,这种认证比因式分解有更好的安全性,而且从证明者角度看来有更高的效率。我们也降低了对Schnorr方案变形的实际安全参数的Girault的证明的花销。最后,基于信息不可识别性,我们得到一个安全性与因式分解相同的盲签名。 1.概述 在密码学中,可证明为安全的方案是一直以来都在追求的一个重要目标。然而,效率一直就是一个难以实现的属性。即使在现在对于认证已经进行了广泛的研究,还是很少有方案能兼顾效率和安全性。其原因就是零知识协议的广泛应用。 身份识别:关于识别方案的第一篇理论性的论文就是关于零知识的,零知识理论使得不用泄漏关于消息的任何信息,就可以证明自己知道这个消息。然而这样一种能够抵抗主动攻击的属性,通常需要许多次迭代来得到较高的安全性,从而使得协议或者在计算方面,或者在通信量方面或者在两个方面效率都十分低下。最近,poupard和stern提出了一个比较高效的方案,其安全性等价于离散对数问题。然而,其约减的代价太高,使得其不适用于现实中的问题。 几年以前,fiege和shamir就定义了比零知识更弱的属性,即“信息隐藏”和“信息不可分辨”属性,它们对于安全的识别协议来说已经够用了。说它们比零知识更弱是指它们可能会泄漏秘密消息的某些信息,但是还不足以找到消息。具体一点来说,对于“信息隐藏”属性,如果一个攻击者能够通过一个一次主动攻击发现秘密消息,她不是通过与证明者的交互来发现它的。而对于“信息不可分辨”属性,则意味着在攻击者方面看来,证据所用的私钥是不受约束的。也就是说有许多的私钥对应于一个公钥,证据仅仅传递了有这样一个私钥被使用了这样一个信息,但是用的是哪个私钥,并没有在证据传递的信息中出现。下面,我们集中考虑后一种属性,它能够提供一种三次传递识别方案并且对抗主动攻击。Okamoto 描述了一些schnorr和guillou-quisquater识别方案的变种,是基于RSA假设和离散对数子群中的素数阶的。 随机oracle模型:最近几年,随机oracle模型极大的推动了研究的发展,它能够用来证明高效方案的安全性,为设计者提供了一个有价值的工具。这个模型中理想化了一些具体的密码学模型,例如哈希函数被假设为真正的随机函数,有助于给某些加密方案和数字签名等提供安全性的证据。尽管在最近的报告中对于随机oracle模型采取了谨慎的态度,但是它仍然被普遍认为非常的有效被广泛的应用着。例如,在这个模型中被证明安全的OAPE加密

密码学实验报告

密码学实验报告 学院:计算机科学与技术 班级: 学号: 姓名: 指导老师:

密码学 实验日志 实验题目: DES (或AES )分组密码 实验目的: 熟悉分组密码加解密算法的基本原理,加深对所提供的部分源程序的理解; 分组密码将明文分成一组一组,在密钥的控制下,经过加密变换生成一组一组的密文。具体而言,分组密码就是将明文消息序列 ,,,,21i m m m 划分成等长的消息组 ),,,,(),,,,(22121n n n n m m m m m m ++在密钥t k k k k ,,,21 =的控制下按固定的加密算法一组一 组进行加密,输出一组一组密文 ),,,,(),,,,(22121l l l l c c c c c c ++。 下面的实验以DES 算法为例,DES 算法明文分组长为64bit ,加密后得到64bit 的密文,输入初始种子密钥为64bit ,第8、16、24、32、40、48、56、64为奇偶校验位,实际的密钥长为56bit 。DES 加密过程由三个阶段来完成: (1) 初始置换IP ,用于重排明文分组的64bit 数据; (2) 相同结构的16轮迭代,每轮中都有置换和代换运算,第16轮变换的输出分为左右两半,并交换次序。 (3) 逆初始置换IP -1 (为IP 的逆)后,产生64bit 的密文。 实验要求: (1) Windows 系列操作系统; (2) VC6.0编程环境。 (3) 提交完整的程序代码清单和详细的注释; (4) 要求有程序运行结果显示。当加密成功时,得到密文;输入相同的密钥,能将密文恢复成明文。 实验主要步骤: (1) 熟悉分组密码加解密算法的基本原理,加深对所提供的部分源程序的理解; (2) 分析源程序中密码算法的加解密和子密钥生成等典型模块的主要功能,并对源程序加上注释; (3) 在已提供的部分源程序的基础上,添加源程序省缺的部分; (4) 对给定的消息分组进行加解密运算和验证。 源代码: #include #include #include typedef bool (*PSubKey)[16][48]; enum {ENCRYPT,DECRYPT}; //选择:加密;解密 static bool SubKey[2][16][48]; // 16圈子密钥 static bool Is3DES; // 3次DES 标志 static char Tmp[256], deskey[16]; //暂存字符串,密钥串

现代密码学课后题答案

《现代密码学习题》答案 第一章 判断题 ×√√√√×√√ 选择题 1、1949年,( A )发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成了一门科学。 A、Shannon B、Diffie C、Hellman D、Shamir 2、一个密码系统至少由明文、密文、加密算法、解密算法和密钥5部分组成,而其安全性是由( D)决定的。 A、加密算法 B、解密算法 C、加解密算法 D、密钥 3、计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译它的所需要的代价超出了破译者的破译能力(如时间、空间、资金等资源),那么该密码系统的安全性是( B )。 A无条件安全B计算安全C可证明安全D实际安全 4、根据密码分析者所掌握的分析资料的不通,密码分析一般可分为4类:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击,其中破译难度最大的是( D )。 A、唯密文攻击 B、已知明文攻击 C、选择明文攻击 D、选择密文攻击 填空题: 5、1976年,和在密码学的新方向一文中提出了公开密钥密码的思想,从而开创了现代密码学的新领域。 6、密码学的发展过程中,两个质的飞跃分别指 1949年香农发表的保密系统的通信理论和公钥密码思想。 7、密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法 5部分组成的。 9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和非对称。 10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列密码。 第二章 判断题: ×√√√ 选择题: 1、字母频率分析法对(B )算法最有效。 A、置换密码 B、单表代换密码 C、多表代换密码 D、序列密码 2、(D)算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。 A仿射密码B维吉利亚密码C轮转密码D希尔密码

实验报告_密码学

信息安全实验报告 学号: 学生姓名: 班级:

实验三密码学实验 一、古典密码算法实验 一、实验目的 通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 二、编译环境 运行windows 或linux 操作系统的PC 机,具有gcc(linux)、VC (windows)等C语言编译环境。 三、实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 1.替代密码 替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码。它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。它的加密过程可以表示为下面的函数:E(m)=(m+k) mod n 其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E(m)为密文字母在字母表中对应的位置数。例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L

2.置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改 变,从而实现明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的 顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而 形成密文。例如,明文为attack begins at five,密钥为cipher,将明文按照每行 6 列的形式排在矩阵中,形成如下形式: a t t a c k b e g i n s a t f i v e 根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 f = 1 4 5 3 2 6 根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列, 第2列,第 6 列的顺序排列,则有下面形式: a a c t t k b i n g e s a I v f t e 从而得到密文:abatgftetcnvaiikse 其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。 四、实验内容和步骤 1、根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择 一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。 2、根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。 五、总结与思考 记录程序调试过程中出现的问题,分析其原因并找出解决方法。记录最终实现的程序执行结果。

密码学在网络安全中的应用

密码学在网络安全中的应用 0 引言 密码学自古就有,从古时的古典密码学到现如今数论发展相对完善的现代密码学。加密算法也经历了从简单到复杂、从对称加密算法到对称和非对称算法并存的过程。现如今随着网络技术的发展,互联网信息传输的安全性越来越受到人们的关注,很需要对信息的传输进行加密保护,不被非法截取或破坏。由此,密码学在网络安全中的应用便应运而生。 1 密码的作用和分类 密码学(Cryptology )一词乃为希腊字根“隐藏”(Kryptós )及“信息”(lógos )组合而成。现在泛指一切有关研究密码通信的学问,其中包括下面两个领域:如何达成秘密通信(又叫密码编码学),以及如何破译秘密通信(又叫密码分析学)。密码具有信息加密、可鉴别性、完整性、抗抵赖性等作用。 根据加密算法的特点,密码可以分为对称密码体制和非对称密码体制,两种体制模型。对称密码体制加密和解密采用相同的密钥,具有很高的保密强度。而非对称密码体制加密和解密是相对独立的,加密和解密使用两种不同的密钥,加密密钥向公众公开,解密密钥只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥[1]。 2 常见的数据加密算法 2.1 DES加密算法 摘 要:本文主要探讨的是当今流行的几种加密算法以及他们在网络安全中的具体应用。包括对称密码体制中的DES加密算法和AES加密算法,非对称密码体制中的RSA加密算法和ECC加密算法。同时也介绍了这些加密方法是如何应用在邮件通信、web通信和keberos认证中,如何保证网络的安全通信和信息的加密传输的。 关键词:安全保密;密码学;网络安全;信息安全中图分类号:TP309 文献标识码:A 李文峰,杜彦辉  (中国人民公安大学信息安全系,北京 102600) The Applying of Cryptology in Network Security Li Wen-feng 1, Du Yan-hui 2 (Information security department, Chinese People’s Public Security University, Beijing 102600, China) Abstract: This article is discussing several popular encryption methods,and how to use this encryption method during security transmittion.There are two cipher system.In symmetrical cipher system there are DES encryption algorithm and AES encryption algorithm.In asymmetrical cipher system there are RSA encryption algorithm and ECC encryption algorithm. At the same time, It introduces How is these encryption applying in the mail correspondence 、the web correspondence and the keberos authentication,how to guarantee the security of the network communication and the secret of information transmits. Key words: safe security; cryptology; network security; information security DES 算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM 公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。 DES 加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES 工作的基本原理是,其入口参数有三个:Key 、Data 、Mode 。Key 为加密解密使用的密钥,Data 为加密解密的数据,Mode 为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,Key 用于对数据加密,当模式为解密模式时,Key 用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。 2.2 AES加密算法 AES (Advanced Encryption Standard ):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。2000年10月,NIST (美国国家标准和技术协会)宣布通过从15种候选算法中选出的一项新的密匙加密标准。Rijndael 被选中成为将来的AES 。Rijndael 是在1999年下半年,由研究员Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 算法原理:AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。 doi :10.3969/j.issn.1671-1122.2009.04.014

现代密码学教程课后部分答案考试比用

第一章 1、1949年,(A )发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成了一门科学。 A、Shannon B、Diffie C、Hellman D、Shamir 2、一个密码系统至少由明文、密文、加密算法、解密算法和密钥5部分组成,而其安全性是由(D)决定的。 A、加密算法 B、解密算法 C、加解密算法 D、密钥 3、计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译它的所需要的代价超出了破译者的破译能力(如时间、空间、资金等资源),那么该密码系统的安全性是(B )。 A无条件安全B计算安全C可证明安全D实际安全 4、根据密码分析者所掌握的分析资料的不同,密码分析一般可分为4类:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击,其中破译难度最大的是(D )。 A、唯密文攻击 B、已知明文攻击 C、选择明文攻击 D、选择密文攻击 5、1976年,W.Diffie和M.Hellman在密码学的新方向一文中提出了公开密钥密码的思想,从而开创了现代密码学的新领域。 6、密码学的发展过程中,两个质的飞跃分别指1949年香农发表的保密系统的通信理论和公钥密码思想。 7、密码学是研究信息及信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法5部分组成的。 9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和非对称。 10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列密码。 第二章 1、字母频率分析法对(B )算法最有效。 A、置换密码 B、单表代换密码 C、多表代换密码 D、序列密码 2、(D)算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。 A仿射密码B维吉利亚密码C轮转密码D希尔密码 3、重合指数法对(C)算法的破解最有效。 A置换密码B单表代换密码C多表代换密码D序列密码 4、维吉利亚密码是古典密码体制比较有代表性的一种密码,其密码体制采用的是(C )。 A置换密码B单表代换密码C多表代换密码D序列密码 5、在1949年香农发表《保密系统的通信理论》之前,密码学算法主要通过字符间的简单置换和代换实现,一般认为这些密码体制属于传统密码学范畴。 6、传统密码体制主要有两种,分别是指置换密码和代换密码。 7、置换密码又叫换位密码,最常见的置换密码有列置换和周期转置换密码。 8、代换是传统密码体制中最基本的处理技巧,按照一个明文字母是否总是被一个固定的字母代替进行划分,代换密码主要分为两类:单表代换和多表代换密码。 9、一个有6个转轮密码机是一个周期长度为26 的6次方的多表代替密码机械装置。 第四章 1、在( C )年,美国国家标准局把IBM的Tuchman-Meyer方案确定数据加密标准,即DES。 A、1949 B、1972 C、1977 D、2001 2、密码学历史上第一个广泛应用于商用数据保密的密码算法是(B )。 A、AES B、DES C、IDEA D、RC6 3、在DES算法中,如果给定初始密钥K,经子密钥产生的各个子密钥都相同,则称该密钥K为弱密钥,DES算法弱密钥的个数为(B )。 A、2 B、4 C、8 D、16

密码学实验第三组实验报告

云南大学数学与统计学实验教学中心实验报告 课程名称:密码学实验学期:2013-2014学年第一学期成绩: 指导教师:陆正福学生姓名:卢富毓学生学号:20101910072 实验名称:零知识证明实验要求:必做实验学时:4学时 实验编号: No.3 实验日期:2013/9/28完成日期:2012/10/18 学院:数学与统计学院专业:信息与计算科学年级: 2010级 一、实验目的: 了解零知识证明,同时掌握FFS识别方案。 二、实验内容: 1. 理解零知识证明 2. 基于GMP实现FFS零知识证明方案 三、实验环境 Linux平台 Code::Block IDE https://www.doczj.com/doc/7519143934.html, 网络在线编程平台(本实验是在此平台中完成的,效果一样) 四、实验过程(请学生认真填写): 1. 预备知识: “零知识证明”它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。 2. 实验过程 A、原理分析: Feige-Fait-Shamir是一种并行的认证形式。具体做法如下 首先:选择大素数q 和p, 计算n=pq ,Peggy 拥有密钥s1, s2, ...,sk 接着做如下UML图中的内容:

//缺点有:首先在编写好程序后才发现,无法模拟伪造者来进行。这个由结果就能看出来。 //同时,此程序仅仅模拟,做不到并行认证。 五、实验总结 1.遇到的问题、分析并的出方案(列出遇到的问题和解决办法,列出没有解决的问题):遇到问题: 主要是对于算法的不熟悉,不能清晰的认识整个算法运作。 分析并解决: 仔细揣摩,并且动手写了一下算法的UML图。得到了加深。 2.体会和收获。 收获: 加深了GMP中函数的运用。 在学习零知识证明的知识后,了解了什么是零知识证明,同时会了一点零知识证明的方法。这是比较大的收获——毕竟以前从没有想过这方面的东西,接触之后才恍然。 当然这个FFS算法也并不是一定的安全。也存在着一定的缺陷和漏洞,例如验证次数、对于vi的猜测等等。 六、参考文献 GMP_Document 《应用密码学》林岱岳 《密码学概论》wade trape 七、教师评语:

密码学实验报告模板总结模板计划模板.doc

密码学应用与实践课程实验报告 实验 1:实现 DES密码体制 一、实验目的 1.编写程序实现 DES的加、解 密:1)编程构造 DES的密钥; 2)应用上述获得的密钥将一段英文或文件进行加、解密。 2.用 DES算法实现口令的安全 二、实验内容 1.DES原理 DES综合运用了置换,代换,移位多种密码技术,是一种乘积密码。在算法结构上采用迭代 结构,从而使其结构清晰,调理清楚,算法为对合运算,便于实现,运行速度快。DES使用了初始置换IP 和 IP-1 各一次(相应的置换看算法描述图表)置换P16 次,安排使用这 3 个置换的目的是把数据彻底打乱重排。选择置换 E 一方面把数据打乱重排,另一方面把32 位输入扩展为48 位,算法中除了S- 盒是非线性变换外,其余变换均为显示变换,所以保密 的关键是选择S- 盒。符合以下 3 条准则: (1)对任何一个 S- 盒而言,没有任何线性方程式等价于此S-盒的输出输入关系,即是S- 盒是非线性函数。 (2)改变 s- 盒的任何一位输入,都会导致两位以上的输出改变,即满足" 雪崩效应 " 。(3)当固定某一个位的输入时,S- 盒的 4 个出位之间,其中0 和 1 的个数之差小。这个准 则的本质是数据压缩,把四位输入压缩为 4 位输出。选择 S-盒函数的输入中任意改变数位, 其输出至少变化两位。因为算法中使用了16 次迭代,大大提高了保密性。 2.DES算法由加密、解密和子密钥的生成三部分组成 1)加密 DES算法处理的数据对象是一组64 比特的明文串。设该明文串为m=m1m2m64 (mi=0 或 1) 。明文串经过64 比特的密钥K 来加密,最后生成长度为64 比特的密文E。其加密过程图示如下:

现代密码学-RC4校验 实验报告

现代密码学 实 验 报 告 院系:理学院 班级:信安二班 姓名: 学号:

前言 密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。 密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。

RC4密码算法算法实现 实验目的: 理解流密码的概念及相关结构; 理解并能够编写基本的流密码体制; 熟练应用C/C++编程实现RC4密码算法体制。 实验内容: 编程实现RC4加/解密算法。 实验原理: RC4算法是一种序列密码体制或称流密码体制,其加密密钥和解密密钥相同RC4的 密钥长度可变,但为了确保哪去安全强度,目前RC4至少使用128位的密钥。 用1~256个字节(8~2048位)的可变长度密钥初始化一个256个字节的状态向量S,S的元素记为S[0],S[1],…,S[255],从始至终置换后的S包含从0到255的所有8位数。对于加密和解密,字节K是从S的255个元素中按一种系统化的方式选出的一个元素生成的。每生成一个K的值,S中的元素个体就被重新置换一次。 实验代码: Encrypt.h文件: #ifndef _ENCRYPT_RC4_ #define _ENCRYPT_RC4_ #include

现代密码学小论文

目录 现代密码学的认识与应用 (1) 一、密码学的发展历程 (1) 二、应用场景 (1) 2.1 Hash函数 (1) 2.2应用场景分析 (2) 2.2.1 Base64 (2) 2.2.2 加“盐” (2) 2.2.3 MD5加密 (2) 2.3参照改进 (3) 2.3.1 MD5+“盐” (3) 2.3.2 MD5+HMAC (3) 2.3.3 MD5 +HMAC+“盐” (3) 三、总结 (4)

现代密码学的认识与应用 一、密码学的发展历程 密码学的起源的确要追溯到人类刚刚出现,并且尝试去学习如何通信的时候,为了确保他们的通信的机密,最先是有意识的使用一些简单的方法来加密信息,通过一些(密码)象形文字相互传达信息。接着由于文字的出现和使用,确保通信的机密性就成为一种艺术,古代发明了不少加密信息和传达信息的方法。 事实上,密码学真正成为科学是在19世纪末和20世纪初期,由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策。 20世纪60年代计算机与通信系统的迅猛发展,促使人们开始考虑如何通过计算机和通信网络安全地完成各项事务,从而使得密码技术开始广泛应用于民间,也进一步促进了密码技术的迅猛发展。 二、应用场景 2.1 Hash函数 Hash函数(也称杂凑函数、散列函数)就是把任意长的输入消息串变化成固定长度的输出“0”、“1”串的函数,输出“0”、“1”串被称为该消息的Hash值(或杂凑值)。一个比较安全的Hash函数应该至少满足以下几个条件: ●输出串长度至少为128比特,以抵抗攻击。对每一个给定的输入,计算 Hash值很容易(Hash算法的运行效率通常都很高)。 ●对给定的Hash函数,已知Hash值,得到相应的输入消息串(求逆)是计 算上不可行的。 ●对给定的Hash函数和一个随机选择的消息,找到另一个与该消息不同的 消息使得它们Hash值相同(第二原像攻击)是计算上不可行的。 ●对给定的Hash函数,找到两个不同的输入消息串使得它们的Hash值相同 (即碰撞攻击)实际计算上是不可行的Hash函数主要用于消息认证算法 构造、口令保护、比特承诺协议、随机数生成和数字签名算法中。 Hash函数算法有很多,最著名的主要有MD系列和SHA系列,一直以来,对于这些算法的安全性分析结果没有很大突破,这给了人们足够的信心相信它们是足够安全的,并被广泛应用于网络通信协议当中。

密码学实验讲义及实验报告2014

密码学基础 实验指导书 黑龙江大学计算机科学技术学院 2013年3月

目录 前言........................................................................................................................... - 2 -要求与评分标准....................................................................................................... - 3 -1要求. (3) 2评分标准 (3) 实验1 古典密码的实现(3学时) .................................................................... - 4 -实验2 对称密钥密码体制的实现(6学时) .................................................... - 4 -实验3 公开密钥密码算法的实现(6学时) .................................................... - 5 -实验4 数字签名算法的实现(3学时) ............................................................ - 5 -附录1:实验报告格式 ........................................................................................... - 7 -

密码学实验报告(AES,RSA)

华北电力大学 实验报告| | 实验名称现代密码学课程设计 课程名称现代密码学 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:

[综合实验一] AES-128加密算法实现 一、实验目的及要求 (1)用C++实现; (2)具有16字节的加密演示; (3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB. 二、所用仪器、设备 计算机、Visual C++软件。 三. 实验原理 3.1、设计综述 AES 中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。State 可以用4×4的矩阵表示。AES 算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。AES 算法的主循环State 矩阵执行1 r N 轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey ,(由于外部输入的加密密钥K 长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。最后执行只包括 3个阶段 (省略 MixColumns 变换)的最后一轮运算。 表2 AES 参数 比特。

3.2、字节代替(SubBytes ) AES 定义了一个S 盒,State 中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S 盒中对应行和列的元素作为输出。例如,十六进制数{84}。对应S 盒的行是8列是4,S 盒中该位置对应的值是{5F}。 S 盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。S 盒按照以下方式构造: (1) 逐行按照升序排列的字节值初始化S 盒。第一行是{00},{01},{02},…,{OF}; 第二行是{10},{l1},…,{1F}等。在行X 和列Y 的字节值是{xy}。 (2) 把S 盒中的每个字节映射为它在有限域GF(k 2)中的逆。GF 代表伽罗瓦域,GF(82) 由一组从0x00到0xff 的256个值组成,加上加法和乘法。 ) 1(] [2)2(3488++++= x x x x X Z GF 。{00}被映射为它自身{00}。 (3) 把S 盒中的每个字节记成),,,,,,,,(012345678b b b b b b b b b 。对S 盒中每个字节的每位 做如下变换: i i i i i i c b b b b b i b ⊕⊕⊕⊕⊕='++++8mod )7(8mod )6(8mod )5(8mod )4( 上式中i c 是指值为{63}字节C 第i 位,即)01100011(),,,,,,,,(012345678=c c c c c c c c c 。符号(')表示更新后的变量的值。AES 用以下的矩阵方式描述了这个变换: ?? ? ?? ? ? ? ? ? ??? ? ????????????+???????????????????????????????????????? ????????????=??????????????????????????0110001111111000011111000011111000011111100011111100011111100011111100017654321076543210b b b b b b b b b b b b b b b b 最后完成的效果如图:

现代密码学教学大纲

《现代密码学》课程教学大纲 一课程说明 1.课程基本情况 课程名称:计算机基础 英文名称:Modern Cryptography 课程编号:2412216 开课专业:信息与计算科学 开课学期:第6学期 学分/周学时: 3 /3 课程类型:专业任选课 2.课程性质(本课程在该专业的地位作用) 本课程的主要目的是让学生学习和了解密码学的一些基本概念,理解和掌握古典密码体制、分组密码体制、公钥密码体制、流密码、数字签名和密码协议的基本概念、基本理论以及基本运算,领会密码体制设计与分析的基本思想与方法,理解密码产品的基本工作原理,以及培养学生在实践中解决问题的能力。本课程属于信息与计算科学专业的专业课程,是数学在信息安全中的一个重要应用,是一门理论性和应用性很强的课程。 3.本课程的教学目的和任务 (1)学生学习本课程之前,应具备《概率论》、《近世代数》和《计算机网络》等基础知识。在理解、掌握、了解三个能力层次上,对学生学习和掌握本课程知识有如下要求: ①理解:能识记密码学基础理论中的基本概念、原理和方法的涵义,并能表述和判断其是与非。 ②掌握:在理解的基础上,能较全面的掌握应用密码学的基本概念、基本原理、基本密码协议和基本技术,并熟练掌握一些典型的密码学方案,能表达基本内容和基本道理,分析相关问题的区别与联系。 ③了解:在掌握的基础上,能运用应用密码学的基本概念、基本原理、协议

和技术,阐释一般安全网络环境中密码产品如何利用密码学理论工作的原理,分析密码技术的实现过程和方法,并能应用有关原理和技术设计出一些简单的密码方案。 (2)课程教学重点与难点: ①教学重点:密码学的基本架构、基本概念、基本原理、基本密码协议和基本技术,以及密码学中一些典型的方案,能表达基本内容和基本道理。 ②教学难点:数学基础知识及其在密码学基本原理、基本密码协议和基本技术中的应用。 (3)课程教学方法与手段: 本课程采用讲授与学生自行练习相结合方式,其手段有: ①利用网络资源、多媒体等教学手段为教学服务,结合相关知识进行讲解 ②详细讲解相关内容,引导学生对此进行深入的思考与分析,勇于单独发表自己的见解; ③课前安排学生查找相关资料,课后布置书面作业,理论与实践相结合,让学生体会并领略密码技术,对密码学有更深刻的认识。 ③引导学生进行创新思维,力求提出新见解 (4)课程考核方法与要求 本课程考核以笔试为主。主要考核学生对基础理论,基本概念的掌握程度,以及学生实际应用能力。平时作业成绩占10%,期中考试成绩占20%,期末考试成绩占70%。 4.本课程与其他课程的关系 学生学习本课程之前,应具备《概率论》、《近世代数》和《计算机网络》等基础知识。

现代密码学学习报告

现代密码学学习报告 第一章 概论 1.1信息安全与密码技术 信息的一般定义属于哲学范畴。信息是事物运动的状态与方式,是事物的一种区别于物质与能量的属性。 “信息”——数据。 机密性——拥有数据的一方或交换数据的各方不希望局外人或对手获得、进而读懂这些数据。 完整性——数据在交换及保存中不被未授权者删除或改动,或者合法的接受者能方便的判断该数据是否已经被篡改。 认证性——也称“不可否认性”或“抗抵赖”,包括信息源和接收端认证性,即信息系统中的实体不能否认或抵赖曾经完成的发送消息或接收消息的操作。利用信息源证据可以检测出消息发送方否认已发送某消息的抵赖行为,利用接收端证据可以检测出消息接收方否认已接收某消息的抵赖行为。此类证据通常还包括时间/时序或“新鲜性”证据。 可用性——授权用户能对信息资源有效使用。显然,信息系统可靠性是其支撑之一。 公平性——信息具有的社会或经济价值只能在交互中体现。公平性就是指交换规则或交互协议要使得参与信息交互的各方承担安全风险上处于相同或相当的地位。 可控性——是指对信息的传播及传播的内容以至信息的机密性具有控制能力的特性。一般指信息系统或(社会)授权机构根据某种法规对信息的机密性、信息的传播通道、特定内容信息的传播具有控制能力的特性,以及获取信息活动审计凭证能力的特性,如“密钥托管”、“匿名撤销”、实时内容检测与过滤、计算机犯罪或诉讼的司法取证等。 1.2密码系统模型和密码体制 密码系统基本模型: 密码体制的分类:对称密码体制的古典算法有简单代换、多名代换、多表代换等。 非对称密码体制:使用非对称密码体制的每一个用户一个是可以公开的,称为公开密钥,简称公钥,用pku 表示;另外一个则是秘密的,称为秘密秘钥,简称私钥,用sku 表示。非对称密码体制又称为双钥密码体制或公钥密码体制。 公钥密码体制的主要特点是将加密能力分开并分别并分别授予不同的用户,因而可以实现信 源M 加密器() c m =1k E 非法接入者密码分析员 (窃听者)搭线信道 (主动攻击) 搭线信道(被动攻击)解密器接收者 ()m c =2k D 密钥源密钥源1K 2 K m m 'm c ' c 1 k 2k 信道密钥信道

相关主题
文本预览
相关文档 最新文档