现代密码学-第5章Hash函数与消息认证习题与解答-20091202

现代密码学-第5章Hash函数与消息认证习题与解答-20091202
现代密码学-第5章Hash函数与消息认证习题与解答-20091202

第5章 Hash 函数与消息认证

习题及参考答案

1. 指出强抗碰撞H ash 函数与弱抗碰撞H ash 函数之间的区别。

答:弱抗碰撞H ash 函数是任给一个消息x,寻找另一个不同的消息x ,

使得他们的H ash 函数值相等是不可行;强抗碰撞Hash 函数是同时寻找两个不同的消息使得他们的Hash 函数值相等是计算上不看行的,可以看出强抗碰撞Hash 函数一定是弱抗碰撞的。

2. 考虑Gibson Hash 函数h 。设p 、q 是两个素数,N =p ?q ,g 是(Z N )*的生成元。N 作为公钥,p 与q 作为签名者的私钥。对任意消息m ,其摘要定义为:

h (m )= g m mod N 。

(1) 令N =4897,g =2231。分别计算消息m =132748,m '=75676的摘要。 (2) 证明:如果得到了两个碰撞的消息,那么就可以求出N 的分解。 (3) 证明:如果得到了N 的分解,那么就可以找到碰撞的消息。 解:(1)由h (m )= g m mod N 。 所以h (132748)=2231

132748

mod4897=2611 h(75676)=2611

(2)证明:若h (m)= h (m ')则有g m mod N= g m ' mod N

假设 N 的分解为 N=p*q 所以代入 然后根据中国剩余定理可以解得 p ,q 。

3. 设p 是一个素数,g 1、g 2是(Z p )*

的两个生成元,使得离散对数

p g g mod log

21

的计算是困难的。对任意消息m =(m 1, m 2),定义H ash 函数h 的摘要为:

p g g m m h m m mod ),(2

1

2

1

21?=。

(1) 设p =65867,g 1=11638,g 2=22770。分别计算消息m =(33123, 11789),m '=(55781, 9871)的摘要。

(2) 证明:求解H ash 函数h 的碰撞等价于计算离散对数p g g mod log

21

解:(1)由p g g m m h m m mod ),(2

1

2121?=并把题中数据代入公式中 得 h(33123,11789)=56381 h (55781,9871)=15899

(2)证明:求解Hash 函数h 的碰撞,即寻找m 和m ',使得)'()(m H m H =,也即

使得:p g g p g g m

m

m m mod mod '

2

'

12

1212

1?=?

两边同时在关于模p 求以1g 为底的对数,整理后得到:

p g m m m m g mod log

)'()'(2

22111

-=-,

这里就涉及到计算离散对数p g g mod log 21

。因此,求解H ash 函数h 的碰撞等价于

计算离散对数p g g mod log

21

4. 设H 1是一个从(Z 2)2n 到(Z 2)n 的Hash 函数,这里n ≥1,Z 2={0, 1}。对任意整数i ≥2,按下述方式定义一个从n

i

22)

(Z 到(Z 2)n 的H ash 函数H i :

对任意n i

x 22)(Z ∈,设

x = x 1||x 2,

其中n

-i x x 1

2

221)

(Z ,∈,定义

H i (x )= H 1(H i -1(x 1) || H i -1(x 2) )。

假设H 1是强抗碰撞的。试证H i 也是强抗碰撞的。 证明:根据定义))(||)(()(21111x H x H H x H i i i --=, 以此类推:))(||)(()(122112111x H x H H x H i i i ---=, ……

))(||)(()(121111111112 x H x H H x H =。

我们不妨假设i H 不是强抗碰撞的,则找得到'x 和已知的)(x H i 碰撞,即有

)'()(x H x H i i =,根据以上推导,可以找到1H 的一对碰撞111' x 和111 x ,这与1H 是

强抗碰撞是矛盾的。

因此,如果H 1是强抗碰撞的那么H i 也是强抗碰撞的。

5. 考虑用公钥加密算法构造Hash 函数。假设使用公钥加密算法RSA ,首先将消息进行分组;用RSA 加密第一个分组;将加密结果与第二个分组作异或,再对其进行加密;一直进行下去。例如,如果消息M 被分成二个分组B 1和B 2,则其H ash 值为H (B 1,

B 2)=RSA (RSA(B 1)⊕ B 2)。证明对任一分组

C 1,可找到分组C 2,使得H (C 1, C 2)=H (B 1, B 2)。进一步证明用这种攻击方法,可攻击该Hash 函数。 证明:

我们先来证明可以找到2C ,使得在已知1C 的情况下使得),(),(2121B B H C C H =。 在RSA 密码体制下,设加密密钥是e 。则),(),(2121B B H C C H =即为

e

e

e e

B B

C C )()(2121⊕=⊕,我们这里不妨令2121B B C C e

e ⊕=⊕, 则e

e C B B C 1122⊕⊕=,这里的2C 总是能找到的,并且它就满足题目要求,使得H (C 1, C 2)=H (B 1, B 2)。

在多个分组的情况下,利用证明的方法,总是能找到满足要求的分组消息,即实现对该H ash 函数的攻击。

6. 参考利用分组密码构造H ash 函数的方法,试利用公钥加密算法RSA 构造一个Hash 函数,并分析其安全性能。

解:上题即是一个基于RSA 算法构造的H ash 函数,其安全性不能好,在实际应用中必须加以改进。

7. 设E k 是一个分组长度为n 的分组密码的加密算法,密钥为k 。假设密钥长度也为n 。对于任意消息x ,首先对x 进行分组,每组长度为n 。如果x 的长度不是n 的倍数,则在x 的最后适当添加一些数据使得x 的长度恰好是n 的倍数。设

x = x 1 x 2…x l ,

其中x i ∈GF(2)n (1≤i ≤ l )。任选IV ∈GF(2)n 作为初始向量,令y 0=IV ,按下面四个不同的公式分别计算y i (1≤i ≤ l ),最后定义H (x )= y l 。试分析四个H ash 函数H 的安全性。

,)(,)(1-⊕⊕=⊕=i i i k i i i k i y x x E y x x E y

.

)(,)(111---⊕⊕⊕=⊕⊕=i i i i k i i i i k i y x y x E y x y x E y

解:H ash 函数一的安全性依赖于分组密码加密的安全性。

Hash 函数二的安全性依赖反馈序列的安全性和分组加密的安全性。 Hash 函数三的安全性依赖于加密密钥的复杂度。

Hash 函数四的安全性依赖于序列的安全性以及加密密钥的安全性。

8. 为什么在密钥公开的条件下,基于分组密码的CBC 工作模式和CFB 工作模式的Hash 函数H 是不安全的?对于任意给定的消息x ,试寻找一个与x 不同的消息x ',使得H (x ')=H (x )。 答案参见第5题。

9.实现MD5-MAC,设密钥K=“001122…99aabb…ff”。分别对消息x=“”,“abc”,“abc…xyz”,求出MD5-MAC(x)。

答略

10.对于SHA,计算W16,W17,W18和W19。

答略

11.用高级语言编写实现SHA-1算法的程序。

(完整版)北邮版《现代密码学》习题答案.doc

《现代密码学习题》答案 第一章 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希尔密码 3、重合指数法对( C)算法的破解最有效。 A 置换密码 B单表代换密码C多表代换密码 D序列密码 4、维吉利亚密码是古典密码体制比较有代表性的一种密码,其密码体制采用的是 (C )。

数据结构实验 散列表实验报告

课程实验报告 课程名称:数据结构 实验项目名称:散列表 专业班级: 姓名:XXX 学号: 完成时间:2015 年06 月13 日

背景 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。在理想情况下,查找、插入、删除操作的时间均为O(1),是一种高效的动态集合结构。 例1:计算机程序设计语言的编译程序需要维护一个符号表,其中元素的关键值为任意字符串,与语言中的标识符对应。该符号表常采用散列表。 例2:为了节约空间,常常需要把文本文件采用压缩编码方式存储。LZW是对文本文件进行压缩和解压缩的方法之一,该方法采用了散列。 问题描述 我们希望在浩瀚的图书中,去发现一本书是否存在。我们不知道书的编号,只知道它的书名。(其实这已经不错了...)。通过书名,来查询它是否存在。 为了简化问题,我们假设每本书的书名都是一组小写字母组成,长度不超过100字符。 基本要求 (1)根据输入建立图书名称表,采用散列表实现该表,散列函数选用BKDE 字符串哈希。 (2)数据的输入输出格式: 输入分为两部分 第一部分,第一行是行数n,n <= 5000。余下n行,每行一个字符串。表示已存 在的图书记录。 第二部分,第一行是行数m,m <= 1000。余下m行,每行一个字符串。表示要查 询的图书记录。 输出: 输出为m行,如果被查的记录存在,则输出"YES",如果不存在则输出"NO"。 测试数据 输入: 4 a ans and hellocpp

密码学答案2

《密码学原理与实践(第三版)》课后习题参考答案 (由华中科技大学信安09级提供) 第二章 2.1(何锐) 解:依题意有:x ∈{2,…,12},y ∈{D ,N} 计算Pr[x ,y]: Pr[2,D]=1/36 Pr[3,D]=0 Pr[4,D]=1/36 Pr[5,D]=0 Pr[6,D]=1/36 Pr[7,D]=0 Pr[8,D]=1/36 Pr[9,D]=0 Pr[10,D]=1/36 Pr[11,D]=0 Pr[12,D]=1/36 Pr[2,N]=0 Pr[3,N]=1/18 Pr[4,N]=1/18 Pr[5,N]=1/9 Pr[6,N]=1/9 Pr[7,N]=1/6 Pr[8,N]=1/9 Pr[9,N]=1/9 Pr[10,N]=1/18 Pr[11,N]=1/18 Pr[12,N]=0 计算Pr[x | y]: 有Pr[D]=1/6 Pr[N]=5/6 Pr[2 | D]=1/6 Pr[3 | D]=0 Pr[4 | D]=1/6 Pr[5 | D]=0 Pr[6 | D]=1/6 Pr[7 | D]=0 Pr[8 | D]= 1/6 Pr[9 | D]=0 Pr[10 | D]= 1/6 Pr[11 | D]=0 Pr[12 | D]=1/6 Pr[2 | N]=0 Pr[3 | N]=1/15 Pr[4 | N]=1/15 Pr[5 | N]=2/15 Pr[6 | N]=2/15 Pr[7 | N]=1/5 Pr[8 | N]=2/15 Pr[9 | N]=2/15 Pr[10 | N]=1/15 Pr[11 | N]=1/15 Pr[12 | N]=0 计算Pr[y | x]: Pr[D | 2]=1 Pr[D | 3]=0 Pr[D | 4]=1/3 Pr[D | 5]=0 Pr[D | 6]=1/5 Pr[D | 7]=0 Pr[D | 8]=1/5 Pr[D | 9]=0 Pr[D | 10]=1/3 Pr[D | 11]=0 Pr[D | 12]=1 Pr[N | 2]=0 Pr[N | 3]=1 Pr[N | 4]=2/3 Pr[N | 5]=1 Pr[N | 6]=4/5 Pr[N | 7]=1 Pr[N | 8]=4/5 Pr[N | 9]=1 Pr[N | 10]=2/3 Pr[N | 11]=1 Pr[N | 12]=0 有上面的计算可得: Pr[D | x]Pr[x] = Pr[D]Pr[x | D] Pr[N | x]Pr[x] = Pr[N]Pr[x | N] 显然符合Bayes 定理。 2.2(王新宇) 证明: 由P=C=K=z n ,对于1≤i ≤n,加密规则e i (j)=L(i,j)(1≤j ≤n), 且每行的加密规则不同。 首先,计算C 的概率分布。假设i ∈ z n ,则 )] (Pr[i ]Pr[]Pr[d K j Z k K y y n k ∑∈ === = )](Pr[i n 1 d K j Z n k ∑∈==

哈希表实验报告完整版

实验报告 姓名:学号: 1.实验题目 针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。 基本要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。 2.需求分析 本演示程序用VC编写,完成哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。 输出形式:地址,关键字,收索长度,H(key),拼音 3.概要设计 typedef struct NAME typedef struct hterm void InitNameList() void CreateHashList() void FindList() void Display() int main() 4.详细设计 #include #include #include

#define HASH_LEN 50 #define M 47 #define NAME_NO 8 typedef struct NAME { char *py; //名字的拼音 int k; //拼音所对应的整数}NAME; NAME NameList[HASH_LEN]; typedef struct hterm //哈希表{ char *py; //名字的拼音 int k; //拼音所对应的整数int si; //查找长度 }HASH; HASH HashList[HASH_LEN]; void InitNameList() { NameList[0].py="houxinming"; NameList[1].py="abc"; NameList[2].py="defdgf"; NameList[3].py="zhangrji"; NameList[4].py="jiaxin"; NameList[5].py="xiaokai"; NameList[6].py="liupeng"; NameList[7].py="shenyonghai";

现代密码学课后答案第二版讲解

现代密码学教程第二版 谷利泽郑世慧杨义先 欢迎私信指正,共同奉献 第一章 1.判断题 2.选择题 3.填空题 1.信息安全的主要目标是指机密性、完整性、可用性、认证性和不可否认性。 2.经典的信息安全三要素--机密性,完整性和可用性,是信息安全的核心原则。 3.根据对信息流造成的影响,可以把攻击分为5类中断、截取、篡改、伪造和重放,进一 步可概括为两类主动攻击和被动攻击。

4.1949年,香农发表《保密系统的通信理论》,为密码系统建立了理论基础,从此密码学 成为了一门学科。 5.密码学的发展大致经历了两个阶段:传统密码学和现代密码学。 6.1976年,W.Diffie和M.Hellman在《密码学的新方向》一文中提出了公开密钥密码的 思想,从而开创了现代密码学的新领域。 7.密码学的发展过程中,两个质的飞跃分别指 1949年香农发表的《保密系统的通信理 论》和 1978年,Rivest,Shamir和Adleman提出RSA公钥密码体制。 8.密码法规是社会信息化密码管理的依据。 第二章 1.判断题 答案×√×√√√√××

2.选择题 答案:DCAAC ADA

3.填空题 1.密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分 析学。 2.8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法 5部分组成的。 3.9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和 非对称。 4.10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列 密码。

第三章5.判断 6.选择题

数据结构课程设计--哈希表实验报告

福建工程学院 课程设计 课程:算法与数据结构 题目:哈希表 专业:网络工程 班级:xxxxxx班 座号:xxxxxxxxxxxx 姓名:xxxxxxx 2011年12 月31 日 实验题目:哈希表 一、要解决的问题 针对同班同学信息设计一个通讯录,学生信息有姓名,学号,电话号码等。以学生姓名为关键字设计哈希表,并完成相应的建表和查表程序。 基本要求:姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。 运行的环境:Microsoft Visual C++ 6.0 二、算法基本思想描述 设计一个哈希表(哈希表内的元素为自定义的结构体)用来存放待填入的30个人名,人名为中国姓名的汉语拼音形式,用除留余数法构造哈希函数,用线性探查法解决哈希冲突。建立哈希表并且将其显示出来。通过要查找的关键字用哈希函数计算出相应的地址来查找人名。通过循环语句调用数组中保存的数据来显示哈希表。 三、设计 1、数据结构的设计和说明 (1)结构体的定义 typedef struct //记录 { NA name; NA xuehao; NA tel; }Record;

{ Record *elem[HASHSIZE]; //数据元素存储基址 int count; //当前数据元素个数 int size; //当前容量 }HashTable; 哈希表元素的定义,包含数据元素存储基址、数据元素个数、当前容量。 2、关键算法的设计 (1)姓名的折叠处理 long fold(NA s) //人名的折叠处理 { char *p; long sum=0; NA ss; strcpy(ss,s); //复制字符串,不改变原字符串的大小写 strupr(ss); //将字符串ss转换为大写形式 p=ss; while(*p!='\0') sum+=*p++; printf("\nsum====================%d",sum); return sum; } (2)建立哈希表 1、用除留余数法构建哈希函数 2、用线性探测再散列法处理冲突 int Hash1(NA str) //哈希函数 { long n; int m; n=fold(str); //先将用户名进行折叠处理 m=n%HASHSIZE; //折叠处理后的数,用除留余数法构造哈希函数 return m; //并返回模值 }Status collision(int p,int c) //冲突处理函数,采用二次探测再散列法解决冲突{ int i,q; i=c/2+1; while(i=0) return q; else i=c/2+1; } else{ q=(p-i*i)%HASHSIZE; c++;

应用密码学习题答案

《应用密码学》习题和思考题答案 第4章 密码学数学引论 4-1 编写一个程序找出100~200间的素数。 略 4-2 计算下列数值:7503mod81、(-7503)mod81、81mod7503、(-81)mod7503。 解:7503mod81=51 (-7503)mod81=30 81mod7503=81 (-81)mod7503=7422 4-3 证明:(1)[]))(m od (m od )(m od )(m od m b a m m b m a ?=? (2)[][])(m od ))(m od ())(m od (m od )(m m c a m b a m c b a ?+?=+? 证明: (1)设(mod )a a m r =,(mod )b b m r =,则a a r jm =+(j 为某一整数),b b r km =+(k 为某一整数)。于是有: [](mod )(mod )mod ()(mod )a b a m b m m r r m ?= ()()() ()() ()() 2()(mod )mod mod mod a b a b a b a b a b m r jm r km m r r r km r jm kjm m r r m ?=++=+++= 于是有:[]))(m od (m od )(m od )(m od m b a m m b m a ?=? (2)设(mod )a a m r =,(mod )b b m r =,(mod )c c m r =,则a a r jm =+(j 为某一整数),b b r km =+(k 为某一整数),c c r im =+(i 为某一整数)。于是有: []()()()()[]()()22()mod (mod ) (mod ) mod mod a b c a b c a b a a a c b c a b a c a b c m r jm r km r im m r jm r km r im m r r r im r km r r r jm kjm r jm ijm m r r r r m ???+=++++????????=++++??=+++++++=+ []()()()()()[]()(mod )()(mod )(mod ) mod mod mod mod a b a c a b a c a b m a c m m r jm r km m r jm r im m m r r r r m ?+?=+++++????=+ 于是有:[][])(m od ))(m od ())(m od (m od )(m m c a m b a m c b a ?+?=+?

现代密码学期终考试试卷和答案

一.选择题 1、关于密码学的讨论中,下列(D )观点是不正确的。 A、密码学是研究与信息安全相关的方面如机密性、完整性、实体鉴别、抗否认等的综 合技术 B、密码学的两大分支是密码编码学和密码分析学 C、密码并不是提供安全的单一的手段,而是一组技术 D、密码学中存在一次一密的密码体制,它是绝对安全的 2、在以下古典密码体制中,属于置换密码的是(B)。 A、移位密码 B、倒序密码 C、仿射密码 D、PlayFair密码 3、一个完整的密码体制,不包括以下(?C?? )要素。 A、明文空间 B、密文空间 C、数字签名 D、密钥空间 4、关于DES算法,除了(C )以外,下列描述DES算法子密钥产生过程是正确的。 A、首先将DES 算法所接受的输入密钥K(64 位),去除奇偶校验位,得到56位密钥(即经过PC-1置换,得到56位密钥) B、在计算第i轮迭代所需的子密钥时,首先进行循环左移,循环左移的位数取决于i的值,这些经过循环移位的值作为下一次 循环左移的输入 C、在计算第i轮迭代所需的子密钥时,首先进行循环左移,每轮循环左移的位数都相同,这些经过循环移位的值作为下一次循 环左移的输入 D、然后将每轮循环移位后的值经PC-2置换,所得到的置换结果即为第i轮所需的子密钥Ki 5、2000年10月2日,NIST正式宣布将(B )候选算法作为高级数据加密标准,该算法是由两位比利时密码学者提出的。 A、MARS B、Rijndael C、Twofish D、Bluefish *6、根据所依据的数学难题,除了(A )以外,公钥密码体制可以分为以下几类。 A、模幂运算问题 B、大整数因子分解问题 C、离散对数问题 D、椭圆曲线离散对数问题 7、密码学中的杂凑函数(Hash函数)按照是否使用密钥分为两大类:带密钥的杂凑函数和不带密钥的杂凑函数,下面(C )是带密钥的杂凑函数。 A、MD4 B、SHA-1

哈希查找_数据结构实验报告

南昌航空大学实验报告 课程名称:数据结构实验名称:实验九查找 班级:学生姓名:学号: 指导教师评定:签名: 题目:编程实现哈希表的造表和查找算法。 要求:用除留余数法构造哈希函数,用二次探测再散列解决冲突。 一、需求分析 1.用户可以根据自己的需求输入一个顺序表(哈希表) 2.通过用除留余数法构造哈希函数,并用开放地址的二次探测再散列解决冲突。 3.在经过排序后显示该哈希表。 4.程序执行的命令包括: (1)创建哈希表(2)输出哈希表(3)二次探测再散列解决冲突 二、概要设计 ⒈为实现上述算法,需要顺序表的抽象数据类型: ADT Hash { 数据对象D:D是具有相同特征的数据元素的集合。各数据元素均含有类型相同,可唯一标识数据元素的关键字。 数据关系R:数据元素同属一个集合。 基本操作P: Creathash(&h) 操作结果:构造一个具有n个数据元素的哈希查找表h。 destroyhash(&h) 初始条件:哈希查找表h存在。 操作结果:销毁哈希查找表h。 displayhash(h) 初始条件:哈希查找表h存在。 操作结果:显示哈希查找表h。 hash(h,&k) 初始条件:哈希查找表h存在。 操作结果:通过除留余数法得到地址用k返回。 hash2 (i,&k) 初始条件:哈希查找表h存在存在,i是除留余数法得到的地址。 操作结果:返回二次探测再散列解决冲突得到的地址k。 search (h,key) 初始条件:哈希查找表h存在。 操作结果:查找表h中的key,若查找成功,返回其地址,否则返回

-1 insert (&h,key) 初始条件:哈希查找表h存在。 操作结果:若表h中没有key,则在h中插入key。 search1(h, key,&p) 初始条件:哈希查找表h存在。 操作结果:在表h中查找key,若没有,则返回p的插入的地址,否 则返回-1。 }ADT Hash 2. 本程序有三个模块: ⑴主程序模块 main(){ 初始化; { 接受命令; 显示结果; } } ⑵创建hash表的模块:主要建立一个哈希表; ⑶解决冲突模块:利用开放地址的二次探测再散列解决冲突; (4)输出哈希表模块:显示已创建哈希表。 三、详细设计 ⒈元素类型,结点类型 typedef struct { int key; }keytype; typedef struct { keytype elem[100]; int length; /*当前的长度*/ int size; /*哈希表的总长*/ }hashtable; /*全局变量*/ int a=0,b=0; /*哈希函数*/ 2.对抽象数据类型中的部分基本操作的伪码算法如下: /*哈希函数*/ int hash(hashtable *h,int k) { return k%h->size; }

现代密码学_清华大学_杨波着+习题答案

设 A = ' ∞ , = = ≤ ? ≤ ∞ ' ? ≤ ? ≤ ∞ ' ? 可求得 A = ' 一、古典密码 (1,2,4) 11,23AGENCY ”加密,并使用解密变换 D 11,23(c)≡11-1(c-23) (mod 26) 验证你的加密结果。 解:明文用数字表示:M=[19 7 4 13 0 19 8 14 13 0 11 18 4 2 20 17 8 19 24 0 6 4 13 2 24] 密文 C= E 11,23(M)≡11*M+23 (mod 26) =[24 22 15 10 23 24 7 21 10 23 14 13 15 19 9 2 7 24 1 23 11 15 10 19 1] = YWPKXYHVKXONPTJCHYBXLPKTB ∵ 11*19 ≡ 1 mod 26 (说明:求模逆可采用第4章的“4.1.6欧几里得算法”,或者直接穷举1~25) ∴ 解密变换为 D(c)≡19*(c-23)≡19c+5 (mod 26) 对密文 C 进行解密: M ’=D(C)≡19C+5 (mod 26) =[19 7 4 13 0 19 8 14 13 0 11 18 4 2 20 17 8 19 24 0 6 4 13 2 24] = THE NATIONAL SECURITY AGENCY 2. 设由仿射变换对一个明文加密得到的密文为 edsgickxhuklzveqzvkxwkzukvcuh ,又已知明文 的前两个字符是“if ”。对该密文解密。 解: 设解密变换为 m=D(c)≡a*c+b (mod 26) 由题目可知 密文 ed 解密后为 if ,即有: D(e)=i : 8≡4a+b (mod 26) D(d)=f : 5≡3a+b (mod 26) 由上述两式,可求得 a=3,b=22。 因此,解密变换为 m=D(c)≡3c+22 (mod 26) 密文用数字表示为: c=[4 3 18 6 8 2 10 23 7 20 10 11 25 21 4 16 25 21 10 23 22 10 25 20 10 21 2 20 7] 则明文为 m=3*c+22 (mod 26) =[8 5 24 14 20 2 0 13 17 4 0 3 19 7 8 18 19 7 0 13 10 0 19 4 0 7 2 4 17] = ifyoucanreadthisthankateahcer 4. 设多表代换密码 C i ≡ AM i + B (mod 26) 中,A 是 2×2 矩阵,B 是 0 矩阵,又知明文“dont ” 被加密为“elni ”,求矩阵 A 。 解: dont = (3,14,13,19) => elni = (4,11,13,8) ?a b / ≤ c d ? 则有: ? 4 / ?a b / ? 3 / ?13/ ?a b / ?13/ '11∞ ' c d ?≤14∞ (mod 26) , ' 8 ∞ ' c d ?≤19∞ (mod 26) ?10 13/ ≤ 9 23∞

【免费下载】hash算法实验

实验课程名称:电子商务安全管理实验项目名称1:DES 、RSA 和Hash 算法的实现实验成绩 试验者 王秀梅专业班级1105441 组别同组者无实验的目的 (1) 掌握常用加密处理软件的使用方法。 (2) 理解DES 、RSA 和Hash 算法的原理。 (3) 了解MD5算法的破解方法。实验环境 (1) 装有Windows XP/2003操作系统的PC 机1台。 (2) MixedCS 、RSATool 、DAMN_HashCalc 、MD5Crack 工具软件各1套。实验步骤1、请参考实验指导PPT 。并在最后写实验心得体会。2、将实验电子版提交FTP——1105441电子商务安全管理——第一次实验报告,文件名为“学号(1105441)+姓名+实验一”。 实验过程记录 (1) 对称加密算法DES 的实现 步骤1:双击运行MixedCS.exe 程序,打开的程序主界面步骤2:单击“浏览文件”按钮,选择要进行DES 加密的源文件,选择完成后在“输出文件”文本框中会自动出现默认的加密后的文件名。步骤3:选中“DES 加密”单选按钮,在“DES 密钥”文本框中输入5个字符 (区分大小、管路敷设技术通过管线敷设技术,不仅可以解决吊顶层配置不规范问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

哈希表实验报告(20200623044247)

数据结构实验报告四一一哈希表查找名字(字符串) 实验题目:哈希表查找名字(字符串) 实验目标: 输入一组名字(至少50个),将其保存并利用哈希表查找。输出哈希查找冲突次数,哈希表负载因子、查找命中率。 数据结构: 哈希表和数组(二维)。二维数组用于静态顺序存储名字(字符串),哈希表采用开放定址法, 用于存储名字(字符串)对应的关键字并实现对名字(字符串)的查找。 需要的操作有: 1.关键字求取(主函数中两次出现,未单独编为函数) 关键字key=abs (字符串首位ASCII码值-第二位ASCII码值+第([n]+i )位ASCII码值撮后一 位ASCII码值-倒数第二位ASCII码值)*字符串长度(abs为求整数绝对值的函数)。 2.处理关键字的哈希函数(Hash) 利用平方取中法求关键值key在哈希表中的位置。公式add=(key*key)%1000/LENGTH(add 为key在哈希表中的地址)。 int Hash(i nt key) { return((key*key)/1000%LENGTH); } 3.处理哈希表中冲突的函数(Collision 利用线性探测再散列处理冲突,利用全局变量count统计冲突次数。 int Collision(int key,int Hashtable[]) { int i; for(i=1;i<=LENGTH;i++) { if(Hashtable[(Hash(key)+i)%LENGTH]==-1) return((Hash(key)+i)%LENGTH); coun t++; } } 4.哈希表初始化(InitHash) void InitHash(int Hashtable[]) { int i; for(i=0;i

密码学习题集参考答案

1、请分别举例说明什么就是保密性原则?完整性原则?认证原则?不可 抵赖原则?访问控制原则?可用性原则?为了实现这六个安全原则,主要采用哪些密码技术? 答: (1)保密性原则就是指不经过授权,不能访问或利用信息,只有发送者与接受者能访问信息内容,信息不能被截获; (2)完整性原则就是指信息不经过授权,不能被修改得特性,即信息在传输得过程中不能被偶然或蓄意得修改、删除或者插入,即不 能被篡改; (3)认证原则就是指信息需要明确得身份证明,通过认证过程保证正确得消息来源,与信息接收方建立信任关系,缺乏认证机制可 能会导致伪造; (4)不可抵赖原则就是指信息得发送者不可否认已发出得信息, (5)访问控制原则就是指定与控制用户能够访问哪些信息,能够有什么样得操作,通常包括角色管理与规则管理; (6)可用性原则就是指就是信息可被授权实体访问并按需求使用得特性,不因中断等攻击停止服务或降低服务标准。 可以通过信息加密、信息隐形、夹带信息等方式来实现信息得保密性,可以通过特定得安全协议、信息摘要、密码校验与等方法实现信息得完整性,通过口令认证、认证令牌、数字证书、消息认证码、公钥算法等方式实现信息得认证,通过数字签名得方法实现信息得完整性与不可抵赖性,通过用户角色认证、防火墙与IDS等方式实现访问控制与可用性原

则。 2、一般病毒、蠕虫、特洛伊木马三者之间最主要得差别就是什么? 答: 病毒可以将自己得代码嵌入到其她合法得程序中,导致计算机系统或网络得破坏; 蠕虫一般不篡改程序,只就是不断得复制自己,最终导致计算机资源或网络大量得消耗从而无法使用,蠕虫不进行任何得破坏性操作,只就是耗尽系统,使其停滞; 特洛伊木马也像病毒一样具有隐蔽性,但一般不像病毒与蠕虫那样不断复制自己,其主要得目得就是为入侵者获得某些用户得保密信息。 简单得说,病毒破坏您得信息,木马窃取您得信息,而蠕虫则攻击系统与网络服务能力。 3、什么就是密码技术?替换加密法与置换加密法有什么区别?请分别 举例说明替换加密法与置换加密法。 答: 密码技术就是加密与解密技术得组合,加密就是通过把信息编码使其从可读得明文转换成不可读得密文得过程,从而获得信息得安全性,而解密则就是通过信息解码把信息从不可读得密文转变为可读明文

现代密码学试卷(含答案)

武汉大学计算机学院 信息安全专业2004级“密码学”课程考试题 (卷面八题,共100分,在总成绩中占70分) 参考答案 (卷面八题,共100分,在总成绩中占70分) 一、单表代替密码(10分) ①使加法密码算法称为对合运算的密钥k称为对合密钥,以英文为例求出其对合密钥,并以明文 M=WEWILLMEETATMORNING 为例进行加解密,说明其对合性。 ②一般而言,对于加法密码,设明文字母表和密文字母表含有n个字母,n为≥1的正整数,求出其对合密钥k。 解答: 1.加法密码的明密文字母表的映射公式: A为明文字母表,即英文字母表,B为密文字母表,其映射关系为: j=i+k mod 26 显然当k=13时,j=i+13 mod 26,于是有i = j+13 mod 26。此时加法密码是对合的。称此密钥k=13为对合密钥。举例:因为k=13,所以明文字母表A和密文字母表B为 a b c d e f g h i j k l m n o p q r s t u v w x y z n o p q r s t u v w x y z a b c d e f g h i j k l m 第一次加密:M=W E W I L L M E E T A T M O R N I N G C=J R J V Y Y Z R R G O G Z B E A V A T

第二次加密:C=W E W I L L M E E T A T M O R N I N G?? 还原出明文,这说明当k=13时,加法密码是对合的。 称此密钥为对合密钥。 ②设n为模,若n为偶数,则k=n/2为对合密钥。若n为奇数,n/2不是整数,故不存在对合密钥。 二、回答问题(10分) 1)在公钥密码的密钥管理中,公开的加密钥Ke和保密的解密钥Kd的秘密性、真实性和完整性都需要确保吗?说明为什么?解答: ①公开的加密钥Ke:秘密性不需确保,真实性和完整性都需要确保。因为公钥是公开的,所以不需要保密。 但是如果其被篡改或出现错误,则不能正确进行加密操作。如果其被坏人置换,则基于公钥的各种安全性将受到破坏, 坏人将可冒充别人而获得非法利益。 ②保密的解密钥Kd:秘密性、真实性和完整性都需要确保。因为解密钥是保密的,如果其秘密性不能确保, 则数据的秘密性和真实性将不能确保。如果其真实性和完整性受到破坏,则数据的秘密性和真实性将不能确保。 ③举例 (A)攻击者C用自己的公钥置换PKDB中A的公钥: (B)设B要向A发送保密数据,则要用A的公钥加密,但此时已被换为C的公钥,因此实际上是用C的公钥加密。 (C)C截获密文,用自己的解密钥解密获得数据。 2)简述公钥证书的作用? 公钥证书是一种包含持证主体标识,持证主体公钥等信息,并由可信任的签证机构(CA)签名的信息集合。 公钥证书主要用于确保公钥及其与用户绑定关系的安全。公钥证书的持证主体可以是人、设备、组织机构或其它主体。

Hash算法MD5 实验报告

哈尔滨工程大学 实验报告 实验名称:Hash 算法MD5 班级: 学号: 姓名: 实验时间:2014年6月 成绩: 指导教师: 实验室名称: 哈尔滨工程大学实验室与资产管理处制

一、实验名称 Hash算法MD5 二、实验目的 通过实际编程了解MD5 算法的加密和解密过程,加深对Hash 算法的认识。 三、实验环境(实验所使用的器件、仪器设备名称及规格) 运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C 语言编译环境。 四、任务及其要求 (1)利用自己所编的MD5 程序对一个文件进行处理,计算它的Hash 值,提交程 序代程和运算结果。 (2)微软的系统软件都有MD5 验证,尝试查找软件的MD5 值。同时,在Windows 操作系统中,通过开始→运行→sigverif 命令,利用数字签名查找验证非Windows 的系 统软件。__ 五、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等) 在MD5 算法中,首先需要对信息进行填充,使其字节长度与448 模512 同余,即信息的字节长度扩展至n*512+448,n 为一个正整数。填充的方法如下:在信息的后面填充第一位为1,其余各位均为0,直到满足上面的条件时才停止用0 对信息填充。然后,再在这个结果后面附加一个以64 位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度为n*512+448= (n+1)*512,即长度恰好是512 的整数倍,这样做的目的是为满足后面处理中后面处理中对信息长度的要求。n 个分组中第q 个分组表示为Yq。MD5 中有A、B、C、D,4 个32 位被称作链接变量的整数参数,它们的初始值分别为: A=01234567B=89abcdef,C=fedcba98,D= 当设置好这个4 个链接变量后,就开始进入算法的4 轮循环运算。循环的次数是信息中512 位信息分组数目。首先将上面4 个链接变量复制到另外4 个变量中A

数据结构课程设计--哈希表实验报告

福建工程学院课程设计 课程:算法与数据结构 题目:哈希表 专业:网络工程 班级:xxxxxx班 座号:xxxxxxxxxxxx 姓名:xxxxxxx 2011年12 月31 日

实验题目:哈希表 一、要解决的问题 针对同班同学信息设计一个通讯录,学生信息有姓名,学号,电话号码等。以学生姓名为关键字设计哈希表,并完成相应的建表和查表程序。 基本要求:姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。 运行的环境:Microsoft Visual C++ 6.0 二、算法基本思想描述 设计一个哈希表(哈希表内的元素为自定义的结构体)用来存放待填入的30个人名,人名为中国姓名的汉语拼音形式,用除留余数法构造哈希函数,用线性探查法解决哈希冲突。建立哈希表并且将其显示出来。通过要查找的关键字用哈希函数计算出相应的地址来查找人名。通过循环语句调用数组中保存的数据来显示哈希表。 三、设计 1、数据结构的设计和说明 (1)结构体的定义 typedef struct //记录 { NA name; NA xuehao; NA tel; }Record; 录入信息结构体的定义,包含姓名,学号,电话号码。 typedef struct //哈希表 { Record *elem[HASHSIZE]; //数据元素存储基址 int count; //当前数据元素个数 int size; //当前容量 }HashTable; 哈希表元素的定义,包含数据元素存储基址、数据元素个数、当前容量。 2、关键算法的设计 (1)姓名的折叠处理

Hash算法实验原理及哈希函数简介

任务一 MD5算法111111********* 一.哈希函数简介 信息安全的核心技术是应用密码技术。密码技术的应用远不止局限于提供机密性服务,密码技术也提供数据完整性服务。密码学上的散列函数(Hash Functions)就是能提供数据完整性保障的一个重要工具。Hash函数常用来构造数据的短“指纹”:消息的发送者使用所有的消息产生一个附件也就是短“指纹”,并将该短“指纹”与消息一起传输给接收者。即使数据存储在不安全的地方,接收者重新计算数据的指纹,并验证指纹是否改变,就能够检测数据的完整性。这是因为一旦数据在中途被破坏,或改变,短指纹就不再正确。 散列函数是一个函数,它以一个变长的报文作为输入,并产生一个定长的散列码,有时也称为报文摘要,作为函数的输出。散列函数最主要的作用于是用于鉴别,鉴别在网络安全中起到举足轻重的地位。鉴别的目的有以下两个:第一,验证信息的发送者是真正的,而不是冒充的,同时发信息者也不能抵赖,此为信源识别;第二,验证信息完整性,在传递或存储过程中未被篡改,重放或延迟等。 二.哈希函数特点 密码学哈希函数(cryptography hash function,简称为哈希函数)在现代密码学中起着重要的作用,主要用于对数据完整性和消息认证。哈希函数的基本思想是对数据进行运算得到一个摘要,运算过程满足: z压缩性:任意长度的数据,算出的摘要长度都固定。 z容易计算:从原数据容易算出摘要。 z抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的摘要都有很大区别。 z弱抗碰撞:已知原数据和其摘要,想找到一个具有相同摘要的数据(即伪造数据),在计算上是困难的。

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

第一章 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

相关文档
最新文档