密码学课程设计-刘欣凯(4)

2019-04-09 08:26

密码学课程设计

1.4古典密码Playfair

1.41古典密码Playfair概述

Playfair密码最为著名的多字母加密密码.它将明文中的双字母组合作为一个单元.并将这些单元转换为密文双字母的组合。Playfair算法基于一个 5x5的字母矩阵.该矩阵通过一个关键词构造。从左到右、从上到下填入该关键词的字母,并去除重复的字母(两个a只取一个);其次。按照字母表顺序将其余字母填入矩阵的剩余空问。字母I和J被算作一个字母,可以根据使用者的意愿在形成密文时确定用I或L。 1.42 算法原理与设计思路

Playfair算法根据下列规则一次对明文的两个字母进行加密。这两个字母构成一对。其加密规则如下:

(1)一对明文字母如果是重复的,则在这对明文字母中间插入一个填充字符,如x。因此,单词session将被分割成:se ss si on.

(2)如果分割后的明文字母对在矩阵的同一行中都出现,则分别用矩阵中其右侧的字母代替行的最后一个字母山行的E第一个字母代替。例如,on被加密成qo。而st被加密为tn。 (3)如果分割后的明文字母对在矩阵的一列中都出现,则分别用矩阵中其下方的字母代替列

的最后一个字母由列的第一个字母代替。例如,en被加密成nU。而aW被加密成ba。 (4)如果分割后的明文字母对既不在矩阵的同一列中都出现也不在矩阵的同一行中都出现。密文是这两个字母所在的长方形的另两个顶点。例如,8e被加密成nk,而cu被加密成ix(或ix)。

(5)如果明文有奇数个字母,末尾加一个无效字母。 1.43关键算法分析

15

密码学课程设计

上述代码主要是用来填充矩阵,首先将明文矩阵进行填充,也就是第一张图片所显示的,这是算法的关键,也是第一步所在。然后上面的算法中还有因为是将明文两两分组,即每两个明文分为一组,那么当明文为奇数的时候,就需要添加一个无关字符,使它可以达到偶数个,以方便分组。

在算法设计过程中,我一共设计了两个函数,即decrypt()加密函数,encrypt()解密函数,main()主函数。主函数中调用加密函数和解密函数,使程序可以比较顺利的进行。

16

密码学课程设计

1.44运行结果

1.45 密码安全性分析

尽管Playfair密码被认为是比较安全的,它仍然是相对容易攻破的。普莱费尔密码隐藏了的频率,但是该体制仍可以用统计分析方法来破译。因为它的明

文仍然完整地保留了明文语言的结果。几百个字母的密文就足够我们分析出规律了。在英文中各种连字:th,he,an,in,re,es,…

因此,Playfair密码对抗穷举攻击的效果比较差。即有26*26=676个双字母,利用现代计算机来分析,很短时间内就可以将其破解。

17

密码学课程设计

实验二 ElGamal 加密和签名

2.1 ElGamal加密和签名概述

2.2 算法原理和设计思路

ElGamal算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。 1.密钥对产生办法

首先选择一个素数p,两个随机数, g 和x,g, x < p, 计算 y = g^x ( mod p ),则其公钥为 y, g 和p。私钥是x。g和p可由一组用户共享。

ElGamal用于数字签名。被签信息为M,首先选择一个随机数k, k与 p - 1互质,计算a= g^k ( mod p )

再用扩展 Euclidean 算法对下面方程求解b:

18

密码学课程设计

M = xa + kb ( mod p - 1 )

签名就是( a, b )。随机数k须丢弃。 验证时要验证下式:

y^a * a^b ( mod p ) = g^M ( mod p )

同时一定要检验是否满足1<= a < p。否则签名容易伪造。 ElGamal签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。素数p必须足够大,且p-1至少包含一个大素数。因子以抵抗Pohlig & Hellman算法的攻击。M一般都应采用信息的HASH值(如SHA算法)。ElGamal的安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。

2.一般的ElGam数字签名方案

在系统中有两个用户A和B,A要发送消息到B,并对发送的消息进行签名。B收到A发送的消息和签名后进行验证。 (1)系统初始化

选取一个大的素数p,g是GF(p)的本原元。h:GF(p)→GF(p),是一个单向Hash函数。系统将参数p、g和h存放于公用的文件中,在系统中的每一个用户都可以从公开的文件中获得上述参数。

(2)对发送的消息进行数字签名的过程

假定用户A要向B发送消息m [1,p-1],并对消息m签字。第一步:用户A选取一个x [1,p-1]作为秘密密钥,计算y= (mod p)作为公钥。将公钥y存放于公用的文件中。第二步:随机选取k [1,p-1]且gcd(k,(p-1))=1,计算r= (mod p)。对一般的ElGamal型数字签名方案有签名方程(Signature Equation):ax=bk+c(mod(p-1))。

其中(a,b,c)是(h(m),r,s)数学组合的一个置换。由签名方程可以解出s。那么(m,(r,s))就是A对消息m的数字签名。第三步:A将(m,(r,s))发送到B (3)数字签名的验证过程

当B接收到A发送的消息(m,(r,s)),再从系统公开文件和A的公开文件中获得系统公用参数p,g,h和A的公钥y。由(m,(r,s))计算出(a,b,c)验证等式: = (mod p)是否成立。

2.3 关键算法分析

19


密码学课程设计-刘欣凯(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:共和中学校志

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: