有关密码算法的论文

2024-04-28

有关密码算法的论文(通用9篇)

篇1:有关密码算法的论文

编者按:这是一篇考场作文,小作者从李白的诗酒风流中一窥盛唐的密码,构思新颖;李白的诗句信手拈来,为文章增添了盛唐的大气。下面让我们一起来看看这篇密码。

密码

九年级2班 王芊芊

“七分化成月光,余下的三分啸成剑气。绣口一吐就是半个盛唐。”

李太白,就是盛唐文学千古风韵的密码。

他嗜酒成诗。兰陵美酒郁金香,玉碗盛来琥珀光。但使主人能醉客,不知何处是他乡。酒也是他诗的密码。也不知到底是李白的诗成就了酒,还是酒成就了李白的诗?

“天子呼来不上船,自称臣是酒中仙。”是啊,那卷卷诗集中所蕴含的,酒的甘美与绮丽所缠绕的,不正是盛唐的风华吗?

“安能摧眉折腰事权贵,使我不得开心颜。”李白嗜酒,却从未有一刻弯下脊梁。就算他落魄,他愁苦,但那皠白的魂灵却一眼就能看见。百官身被皆绮绣,惟他一身不净的白衫。不想做官吗?想!但他不喜邪慝污浊的官场之气,惹人一身腥臭。罢!罢!罢!不做那如蚁附膻的人,甩甩袖子,他离开了长安。这是柔靡中的风骨,盛唐风骨。

这位伟大的文豪,情也是无比的复杂深刻,看似洒脱却仍饱含缠绵的爱恨情仇.“白发三千丈,缘愁似个长”的纠结与愁苦后是“抽刀断水水更流,举杯浇愁愁更愁”的低落。有“俱怀逸兴壮思飞,欲上青天揽明月”的壮志满怀,也有“云想衣裳花想容,春风扶槛露华浓”的无限婐㛂。“愁而不悲,悲而不戚,戚而不伤,伤而不废”,他绮丽又美好的想象,刚劲却柔美的文笔,铸就了那个丰富的李白。盛唐的情,就像清晨湖上的水汽蒸腾,缠绵绯侧又干净纯洁,似一壶美酒,醉人。回不去的大唐盛世,且只能由这密码让人窥探一二了。

李白,那个永远醉倒在采石矶下的李白,却永远清醒在无数人的心中,像盛世大唐的一个标志和机关,鲜活着。他仗剑而行,踏步而歌,每一步每一曲都淌着盛唐的无限风华。他在人们的梦中潇洒着,浪漫着,壮志满怀着,愁情啮骨着,刚正不阿着,嗜酒成疯着,醉着,美着,偊偊独行,不曾老去。

多想用他打开这把锁,回到盛世大唐。

多美的盛唐余音。

公众号:曲一奏雅

本文为原创文章,版权归作者所有,未经授权不得转载!——文库

篇2:有关密码算法的论文

设置无线宽带路由器密码对于无线网络的安全是非常重要的,同时也能防止别人入侵或者那些蹭网用户,保证良好的网络环境。TP-Link的无线路由器一向以性能稳定,价格实惠赢得大家的喜爱,在市场上占有相当大的份额。无线路由器因为不受物理条件的限制,其网络覆盖范围和空间很难控制,所以为了安全,我们最好给自己的TP-Link无线路由器密码的设置。

TP-Link无线路由器默认状态下是没有开启无线功能的,所以如果你的路由器是新的或者刚刚重新复位了,那么你需要一个网线来连接你的电脑和路由器以进行设置。用网线将电脑和路由器连接好后打开路由器电源,就可以开始进行设置了。需要设置的无线宽带路由器密码有路由器登录密码和无线连接密码两个,下面我们来看具体的设置方法。

一、设置路由器的登录用户和无线宽带路由器密码(管理密码)

1、进入路由器管理界面

打开IE浏览器,在地址栏输入路由器默认的地址192.168.1.1,回车后会跳出登录窗口要求输入用户名和密码,

输入用户名和密码(默认的用户名:admin,密码:admin),点击确定按钮,进入路由器设置界面。

2、在设置页面左边的树形列表依次点击系统设置>修改登录口令,进入登录口令修改界面。

二、设置路由器的无线密码

在左边的树形列表中点击 无线参数。进入无线参数设置,如下图:

在无线参数设置界面,首先要勾选开启无线功能和允许SSID广播,然后勾选开启安全设置,选择安全类型为常用的WEP,密钥格式选择为ASCII码。密钥就是无线宽带路由器密码,就是我们以后用无线网卡连接无线路由器上网时需要输入的安全密码,一般只需设置一个密码。

篇3:基于混沌的密码算法设计

本文“一组一密”算法的思想是:通过一定的方法从logistic公式产生的混沌序列中提取出64位的密钥序列, 将其折叠分割, 用其组成分组密码算法的子密钥, 使用分组密码算法对明文进行加密, 每加密一组明文更换一组密钥, 实现“一组一密”。

对于传统的“一组一密”对明文的块的划分是固定的, 而本文算法的思想是让64位的密钥多次折叠后成为分组密钥中的子密钥, 同时明文的块的划分, 随着密钥的多次折叠变化而变化。

对十进制的十个元素进行哈夫曼编码。如表1得到十个数的不同字符编码。

例如:表达式f=0.23457742571956402600的值取小数点后面18位数值化后, 取其密钥序列的前64位, 不足的补0。

根据表1对f数值化:01001110 00100110 11101110 00010100 11011001 11110011 01010000 00010101 0

取其前64位得01001110 00100110 11101110 00010100 11011001 11110011 01010000 00010101

1) 明文以64位8字节为一组, 不需要折叠, 折叠0次得到1个子密钥如图1。

子密钥只有一个, 那么所得的密钥序列不用折叠直接用作加密。

子密钥1:01001110 00100110 11101110 00010100 11011001 11110011 01010000 00010101

2) 明文以32位4字节为一组。需要折叠1次, 折叠1次得到2个子密钥如图2。

密钥序列:01001110 00100110 11101110 00010100 1101100111110011 01010000 00010101

子密钥1:01001110 00100110 11101110 00010100

子密钥2:10101000 00001010 11001111 10011011

这样根据密码折叠的次数越多, 加密的强度也越大, 要破译的难度也越大。由上面的四种分组加密的方法做分析, 分组加密之间的比较如表2。

根据本文“一组一密”算法的设计, 下面我们用下面的流程图来实现具体的整个加密和解密过程。

一组一密加密过程如图3。

2 混沌序列数值化分析

对一篇2000字符的文章进行十次不同密钥加密后的结果进行分析, 明文ASII2码中0和1的个数, 以及经过不同的混沌加密方式相同的密码进行加密后, 0和1的个数。明文和密文ASII2码中0和1的个数如表3。

对表行分析, 得到以下结果:

1) 4种不同的混沌加密方法均可以减少明文中0与1的个数差距。

2) 密文中0与1的比例在减少即意味着该混沌加密算法防止统计分析攻击。

通过上面的结论可得, 该混东加密能够将文章中的内容“混淆”到密文中, 而使统计学无法发挥作用, 使其无法统计。

3 字符分布分析

对一篇2000字符的文章的字符加密前ASCII码分布进行分析, 加密前字符分布情况如图4。

2000字符的文章的字符加密后ASCII码分布进行分析, 加密后字符分布情况如图5。

图4是对一篇长度约2000字符的英文文章的字符出现频率所作的统计图, 图5给出相应加密文的字符出现频率图。明文字符主要为小写英文字符和空格符;而用本文算法加密后相应的密文字符却比较均匀地分布在ASCII码值0-127的整个字符空间, 在ASCII码值128-255空间内几乎没有分布。可见本加密算法产生的密文均匀地扩散到这个空间中。因此, 密文将具有较强的抗统计分析攻击的能力。

摘要:混沌系统对初始条件极端敏感, 由于系统内部存在随机性, 经过多次迭代后, 会产生大量的类似随机数且较宽频谱具有优良的密码学性能的序列。该文的工作重点是用logistic公式产生的随机数来设计混沌加密算法, 对混沌序列进行“折叠”处理, 再根据哈夫曼树编码对其数值化, 较大保留了混沌序列的伪随机性, 作为原始的密钥。然后针对不同加密强度的需求设计“一组一密”加密算法。

关键词:混沌,解密,数据加密,加密算法

参考文献

[1]李海泉, 李键.计算机网络安全与加密技术[M].北京:科学出版社, 2003.

篇4:有关密码算法的论文

关键词:对称;非对称;密码算法

中图分类号:TP212.9;TN918.82

根据加密算法与解密算法所使用的密钥是否相同,可将密码算法分为对称密码算法与非对称密码算法。接下来,就从体制思想,工作原理和加密方案等几个方面来简要地分析对称密码算法和非对称密码算法。

1 体制思想的异同

1.1 含义。所谓的对称密码算法(Symmetric Cipher),也叫传统密码算法,其含义就是加密密钥能够通过解密密钥推导出来,反之用解密密钥也可以推导出加密密钥。在大多数的对称密码算法中,加密密钥和解密密钥其实是一致的,就是同一个密钥。因此也将此算法称为单密钥算法或秘密密钥算法,此密码算法要求发送者和接收者在进行安全通信交互以前,先要商定一个安全保密的密钥,以便在通信过程中使用。

所谓的非对称密码算法(Asymmetric Cipher),也称为双密钥算法,是指一个加密算法的加密密钥和解密密钥是不相同的,是两把密钥,或者说不能通过其中一个密钥推导出另一个密钥。非对称密钥也常常称为公钥密码算法,因为它是用两个数学相关的密钥对信息进行编码,一个叫做公开密钥,一个叫做私有密钥,公开密钥主要用于对信息的加密,可随意发给期望同密钥持有者进行安全通信的人,私有密钥主要用于对信息的解密,属于密钥持有者,保存好私有密钥至关重要。

1.2 核心思想。对称密码算法的核心思想是加密和解密采用相同的密钥;非对称密码算法的核心思想是加密和解密采用不同的密钥。

1.3 密文安全性。对于对称密码算法而言,密文的安全性完全依赖于密钥的保密性,一旦密钥泄露,将毫无保密性而言;对于非对称密码算法而言,公钥是公开的,只有私钥是需要保密的,知道公钥和密码算法要推测出私钥在计算上是不可行的,只要私钥是安全的,那么加密就是可信的。

2 工作原理的异同

2.1 对称加密算法的工作原理。假设两个用户需要使用对称加密方法加密后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。

2.2 非对称加密算法的工作原理。如果两个用户需要采用非对称加密算法加密数据,则两个用户之间的工作原理如下:首先用户A要向用户B发送交互信息,用户A和用户B同时都要产生一对用于加密和解密的公钥和私钥,用户A的私钥保密,公钥告诉B;用户B的私钥保密,公钥告诉A。当用户A要给用户B发送信息时,则需先使用用户B的公钥加密信息,然后将这个消息发给用户B,用户B收到这个消息后,用自己的私钥解密A发送过来的消息。而其他所有收到这个报文的人由于没有用户B的私钥而都无法解密。同理,如果用户B向用户A发送消息也需要先使用用户A的公钥加密发送,然后再由用户A用其私钥解密即可。

3 加密方案的异同

3.1 对称密钥加密方案。对称密钥的加密方案是概率多项式时间算法(Gen,Enc,Dec)的三元组:(1)密钥生成算法Gen的输入安全参数1n,输出密钥k;记为k←Gen(1n)(要强调Gen是一个随机算法)。不失一般性,假设任何由Gen(1n)输出的密钥k,都满足|k|≥n。(2)加密算法Enc将密钥k和明文消息m∈{0,1}*作为输入,并且输出一个密文c。因为Enc可能是随机化的,记为c←Enck(m)。(3)解密算法Dec将密钥k和密文c作为输入,输出一份消息m。假设Dec是确定性的,所以记为m:=Deck(c)。需要满足的是:对每个n、每个由Gen(1n)输出的密钥k,每个m∈{0,1}*,都满足Deck(Enck(m))=m。如果(Gen,Enc,Dec)满足:对每个由Gen(1n)输出的密钥k,算法Enck只对消息m∈{0,1}l(n)有定义,则假设(Gen,Enc,Dec)是一个消息长度为定长l(n)的对称密钥加密方案。

3.2 非对称密钥的加密方案

非对称密钥的加密方案是一个概率多项式时间算法(Gen,Enc,Dec)的元组。(1)生成密钥算法Gen用安全参数作为输入,输出一对密钥(pk,sk)。把pk称为公钥,把sk称为私钥。为了方便,假设pk和sk的各自长度至少为n,而且n可由pk和sk确定。(2)加密算法Enc将公钥pk和来自某个明文空间的一个消息m作为输入,输出密文c,记为c←Encpk(m)。(3)解密算法Dec把私钥sk和密文c作为输入,输出一个消息m或一个定义为失败的特殊符号⊥。不失一般性,假设Dec是确定的,记为m:=Decsk(c)。需要满足的是:Pr[Decsk(Encpk(m))=m]。概率的计算来源于Gen(1n)输出的(pk,sk)和Enc使用的任何随机性。显而意见,对称加密算法与非对称加密算法虽然都是概率多项式的元组,都包括生成密钥算法Gen,加密算法Enc,解密算法Dec,但是还是有重要区别的,对称密钥算法生成密钥算法Gen是一个k,需要绝对保密,而非对称密钥算法生成密钥算法Gen是两个密钥,一个为公钥pk,一个为私钥sk,其中pk还是公开的,不需要保密。

4 优缺点的异同

4.1 对称加密算法的优缺点。对称加密算法的优点是:(1)算法公开;(2)计算量小;(3)加密速度快;(4)加密效率高;(5)密钥较短;(6)发展历史悠久。对称加密算法的缺点是:(1)通信双方都使用相同的密钥,安全性得不到应有的保证;(2)由于每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一密钥,从而使得收发信双方所拥有的密钥数量呈几何级数增长,密钥管理成为用户的严重负担,使用成本也相对过高;(3)缺乏了签名功能,使得使用范围有所缩小。

4.2 非对称加密算法的优缺点。非对称加密算法的优点是:(1)在多人之间进行保密信息传输所需的密钥组和数量很小;(2)密钥的发布不成问题;(3)公开密钥系统可实现数字签名。非对称加密算法的缺点是:(1)加减密速度慢;(2)密钥尺寸大;(3)计算量较大;(4)发展历史较短。

通过上述的对比,让我们较清楚地从体制思想,工作原理和加密方案等多方面了解了对称加密算法和非对称加密算法的异同,同时对对称加密算法和非对称加密算法的优缺点做了鲜明的对比,这可以帮助我们初步了解对称加密算法和非对称加密算法,同时对以后了解基于“对称密钥”的经典加密算法DES、TripleDES,基于“非对称密钥”的经典加密算法RSA、Elgamal都打下了良好的基础,对称加密算法与非对称加密算法还有很多的“密钥”,等待我们进一步开启。

参考文献:

[1]宋秀丽.现代密码学原理与应用[M].北京:机械工业出版社,2012.

[2]乔纳森·卡茨.现代密码学——原理与协议[M].北京:国防工业出版社,2011.

[3]李顺东,王道顺.现代密码学:理论、方法与研究前沿[M].北京:科学出版社,2009.

作者简介:胡燏(1978-),男,重庆忠县人,副教授,硕士研究生,研究方向:计算机网络及计算机编程。

篇5:有关密码算法的论文

1、加减法中和101有关的速算法。

例1:287+1001=287+(10+1)=287+10+1=1287+1=1288

287+999=287+(10-1)=287+10-1=1287-1=1286 法则: 当有一个加数是101时,先用另一个加数加上10,再加上1或者减去1。口诀是:先加整,再看零;少加1要加上1,多加1要减去1。例2:3596-1001=3596-(10+1)=3596-10-1=2596-1=2595

3596-999=3596-(10-1)=3596-10+1=2596+1=2597

法则: 当减数是101时,先减去10,再减去1或者加上1。口诀是:先减整,再看零;少减1要减去1,多减1要加上1。

2、乘除法中和101有关的速算法。

例3:429999=429(10-1)=42910-4291=429000-429=428571 5399=53(10-1)=5310-531=5300-53=5247 法则:当有一个因数是10-1时,用另一个因数减去1作积的前半部分,用10减去积的前半部分作积的后半部分。

这是另一个因数是n位数时的速算法。其实当另一个因数的位数少于n位时速算方法也相同,但是当另一个因数的位数多于n位时,速算方法稍有不同。

例4:416799=4167(10-1)=416710-41671=416700-4167=412533 26739=2673(10-1)=267310-26731=26730-2673=24057 法则:当另一个因数的位数多于n位时,先用这个因数从个位起的n位减去1的差作减数,用10作被减数,差作积的后半部分,再用这个因数减去它从最高位起多于n位的部分,再减去1作积的前半部分。

法则虽然啰嗦难记,但是运用起来并不复杂,速度还是要比笔算快许多。例5:4291001=429(10+1)=42910+4291=429000+429=429429 53101=53(10+1)=5310+531=5300+53=5353 法则:当有一个因数是10+1时,把另一个因数连写两遍就得到积。

n2233n1122nn2233nnn3333nn3333nn这是另一个因数是n位数时的速算法。当另一个因数的位数少于n位时,这个因数少几位就在写第二遍时先写几个0就行了。但是当另一个因数的位数多于n位时,速算方法稍有不同。例6::4167101=4167(10+1)=416710+41671=416700+4167=420867 26731001=2673(10+1)=267310+26731=2673000+2673=2675673 法则:当另一个因数的位数多于n位时,把这个因数错开n位写两遍再求和就行了。当10-1作除数时,除非被除数是10-1的整数倍,一般情况下,商是纯循环小数,循环节有n位。当被除数是n位时,被除数就是循环节;当被除数少于n位时,在被除数前用0补够n位就是循环节;当被除数多于n位时,商是带小数,是以上两种情况的综合。例7:4291001=0.428571(428571是循环节)53101=0.5247(5247是循环节)

和例3对比可以发现:除数是10+1时商的循环节正好是因数是10-1时的积。条件是被除数和另一个因数相同且是n位数。证明如下:若A是n位数,则有

nnnn3322AA(10n1)A(10n1)2n10A(10+1)=n==。分母-1是由2n个9组成的,101(10n1)(10n1)102n1n这说明A(10+1)的商是纯循环小数,循环节是A(10n1)。问题得证。二〇一五年三月三日

篇6:一种AES密码算法的硬件实现

密码模块是安全保密系统的重要组成部分,其核心任务就是加/解密数据。目前,分组密码算法AES以其高效率、低开销、实现简单等特点被广泛应用于密码模块的研制。随着计算机信息技术和超大规模集成电路技术的成熟与发展,通过硬件来实现密钥模块的内部运作,可保证在外界无密钥的明文流动,能够实现真正意义上的保密。此外,硬件实现还具有高速、高可靠性等特点。目前许多AES算法的硬件实现采用基于RAM查找表方式来实现算法中最关键的SubBytes部分。本文采用复合域来实现SubBytes部分的求逆运算,以便于采用组合逻辑减小面积[1]。同时采用加/解密运算中列变换的部分电路进行复用,从而进一步节省实现面积。这样可以使AES密码应用于RFID系统,IC卡等面积要求较小的场合。

1 AES算法简介

AES算法是一种迭代型分组密码,其分组长度和密钥长度均可变,各自可以独立指定为128 b,192 b,256 b[2,3]。本文主要讨论分组长度和密钥长度为128 b的情况。AES算法是将输入的明文(或密文)分成16个字节,在第一个Add Round Keys变换后进入10轮迭代。迭代过程的前9轮完全相同,依次经过字节代替(substitute bytes)、行移位(shift rows)、列混合(mixcolumns)、轮密钥加(add round keys),最后一轮则跳过了列混合(mix columns)。解密过程与加密过程类似,但执行顺序与描述内容有所不同,因此AES算法的加解密运算需要分别实现。

2 AES算法的硬件设计

根据AES算法的原理和基本结构,将整个AES算法模块分成4个相对独立的子模块:接口模块、控制单元模块、加解密运算模块、密钥扩展模块。本文所设计的密码算法不包括密钥发生器,所用的密钥通过接口模块由外部输入,加解密运算后的数据经输出接口输出[4]。AES算法模块的总体结构如图1所示。

2.1 接口模块的设计

输入接口模块的主要任务是:将数据传送到加解密运算模块,将外部输入的密钥传送到密钥扩展模块。由于明文和密钥输入都是128位,将导致整个模块的输入/输出过多,占用太多资源,考虑到本文的设计主要应用于对面积要求较小的场合使用,如RFID系统中数据的传输[5],即每次传输的数据是64位,故采用4个32位寄存器,在时钟的控制下每次输入1组32位,通过4个时钟周期可得到128位的数据,可以有效减少资源的占用。输出接口模块的作用是将128位的解密运算结果输出,同样也采取32位分4组输出的方法。

2.2 控制模块的设计

控制模块的主要任务是实现加/解密运算模块与密钥扩展模块工作的启动。控制模块在时钟脉冲控制下,产生控制加/解密模块中字节替代、行移位、列混合、密钥加各部分工作信号。可由1个两状态的状态机实现控制。当新的数据或密钥输入时,通过状态机的信号可判断上次加/解密运算是否完成。如果状态机信号处于忙状态,说明加解密运算正在进行,需要等待;如果信号处于空闲状态,说明加解密运算已经完成,可以启动加解密运算模块与密钥扩展模块,将数据和密钥分别输入到加解密运算模块与密钥扩展模块中,开始新一组数据的加解密运算。

2.3 加解密运算模块的设计

AES算法的轮变换特点使之在硬件实现时可以有多种方式[6]:串行方式,轮变换可采用组合逻辑实现;在10轮迭代过程中,前一轮结果可直接作为下一轮的输入;并在1个周期内完成1个分组运算,使吞吐量达到最佳状态。但需要大量的存储器资源和组合逻辑资源支持,一般的FPGA芯片难以满足容量的需求,而且时钟频率非常低;基本迭代反馈方式,所有迭代只用1个轮变换模块,10个时钟周期完成1个分组运算,资源占用较少;轮内流水线方式,在轮变换中插入寄存器,将每轮运算分成多个操作段,每个时钟完成1个操作段,其优点是可以提高算法运行的时钟频率。但轮内各级流水部件不能同时执行,因此增加了算法运行的时钟数目。轮内流水线级数越多,时钟数目也越多,虽然算法仿真频率可以达到很高,但吞吐量并没有明显提高。

综上比较可知,本文AES算法的硬件实现的目的是尽量减少资源的占用,使面积尽可能减小。故采用基本迭代反馈工作方式设计。

2.3.1 SubBytes( )和InvSubBytes( )的设计

字节代替是整个AES硬件实现中最为重要的变换,在加解密运算模块及密钥扩展模块中字节代替是主要的运算过程。因此,字节代替的硬件设计决定了整个AES算法硬件实现的速度和面积。字节代替可以通过查找表和算术运算的方式[7]得到。传统的AES算法使用查找表方法实现字节代替,可以提高求逆速度,但由于该变换输入的数据为8位,加密和解密所用的替换字节表不同,因此需要的选择器和寄存器数量较多,硬件实现面积较大,故主要用于高速AES的实现。算术运算的方式在硬件设计上表现为组合逻辑,采用算术运算的方式实现则会降低硬件设计的复杂度,减小面积[8]。

2.3.2 ShiftRows( )和InvShiftRows( )的设计

行移位变换作用在中间态的行上,将状态中的行按不同的偏移量进行循环移位。加密运算中间态的0~3行,分别向右循环移动0,1,2,3个字节。该操作仅是将数据按字节进行移动,硬件实现时只需在布线上进行调整,基本不占硬件资源。

解密过程只是行移位的逆变换,即分别向左循环移动0,1,2,3个字节。同样,该操作也仅将数据按字节移动。如果有字节的位置改变,只需在布线上进行修改。

2.3.3 MixColumns( )和InvMixColumns( )的设计

MixColumns( )变换以矩阵中的列为单位,将每列看作一个GF(28)域上的四阶多项式,将多项式乘以c(x)/d(x)并对x4+1取模。其中c(x)为:

undefined

在相应的解密过程中:

undefined

同样对x4+1取模。

为了降低整个模块的复杂度,考虑将加解密运算中列混合变换的部分电路进行复用,对比加解密运算所乘的多项式,可以发现{03}x可以用({02}x)⊕x表示,同理:

undefined

因此,{02}x可以作为一个基本单元,由于在GF(28)域内,{02}x mod m(x),x∈GF(28)

undefined

这样:

undefined

由于0⊕xi=xi,式(8)只需要4个异或门就可实现。将该单元记为xtime( )函数。其硬件结构如图2所示。加密时所取的系数较小{01,02,03},所以只需经过一次xtime( )单元,便将乘法运算转换为移位操作和加法运算的复合。

而解密时,Mixcolumns( )的系数是{09,0B,0E,0D},实现这些乘法显然比加密时需要更多的时间。由式(3)可知,InvMixcolumns( )也可用xtime ( )函数与异或门实现。这样,就可以实现加/解密列混合变换电路的复用,从而节约电路面积,提高解密运算速度[9]。

2.3.4 密钥加AddRoundKey( )的设计

在AES算法中,加法用异或操作实现。密钥加是中间状态的每一字节按位与轮密钥进行异或操作,加法的逆运算也用异或操作,所以可采用逐位异或操作实现加解密运算的AddRoundkey( )。AddRoundkey( )的逆运算是其自身。因此本文在常规轮中把加密时的密钥加、列混合变换和解密时的密钥加、列混合变换集成为同一模块,通过加解密信号的选择,实现加解密运算的列变换和密钥加功能。这样可消除加解密硬件结构的差异,同时也可降低轮密钥处理的复杂度。

2.4 密钥扩展模块的设计

轮密钥的产生是AES 加解密运算的基础,密钥扩展模块的作用就是产生除了初始密钥本身之外的10 个轮密钥,分别用于10轮加解密运算。

加密运算采用密钥内部扩展的方式,即加密运算与密钥扩展并行完成[10]。这一过程,每一轮变换都要和相应密钥扩展轮次生成的子密钥进行异或,因此需使用状态机控制加密运算和密钥扩展的同步,否则会发生混乱。需要指出,使用内部扩展方式可以提高整个加密运算速度。而解密运算采用外部扩展方式,即密钥扩展完之后再进行解密运算,因为解密运算使用的初始密钥是密钥扩展生成的最后一轮子密钥。

3 仿真测试与结果

根据前述设计思路和优化措施, 系统采用Mentor公司专门为各逻辑器件制造厂商设计的第三方专用仿真工具ModelSim 6.0进行功能仿真,给出了最后的功能仿真图。

3.1 加密运算的仿真测试

一次完整的加密操作,需要12个时钟周期。其中,10个周期用于10个轮循环变换,1个时钟周期用于初始的密钥扩展,1个时钟周期用于密文的输出。加密运算的功能测试仿真波形如图3所示。

从图3给出的加密运算功能仿真结果可以看出,加密运算与密钥扩展过程是并行进行。当“rst”变为低电平,“ld”变为高电平时,明文3243f6a8885a308d313198-a2e0370734与密钥2b7e151628aed2a6abf7158809cf4f3c分别同时加载到加解密运算模块与密钥扩展模块中;在下一个时钟周期,密钥扩展模块生成1轮子密钥,等待加密轮变换中的密钥加操作。当完成1次加密过程后,“done”信号变为高电平,同时输出密文3925841d02dc09fbdc-118597196a0632。从图3中同时也可以看出,密钥扩展模块总是提前一个时钟周期生成下一轮的子密钥,这样可以保证密钥扩展与加密运算同时进行而不会发生错乱,并且还可提高加密速度,节约资源占用和减少面积。使用DC进行综合和优化后,加密运算模块面积不超过20 000个等效门,其中组合逻辑面积为14 264门,非组合逻辑面积为3 878门。

3.2 解密运算的仿真测试

在解密过程中,完成一次解密操作同样需要12时钟周期。其中,10个周期用于10个轮循环变换,1个时钟周期用于初始密钥的加载,1个时钟周期用于密文的输出。在解密过程中,本文采用在解密之前所生成的10轮子密钥,因为解密初始需要的子密钥是密钥扩展得到的最后一轮子密钥,而最后一轮需要的子密钥是密钥扩展的初始密钥。如图4所示。

解密过程与密钥扩展过程不是同步的,当“kld”为高电平时,从第1个时钟周期开始,便将初始密钥2b7e151628aed2a6abf7158809cf4f3c输入到密钥扩展模块中,之后经过10个时钟周期生成10轮子密钥,并存储到寄存器中。当“ld”为高电平时,密文3925841-d02dc09fbdc118597196a0632开始加载到解密模块中,经过10个时钟周期将解密的密文输出,同时“done”信号变为高电平,表示解密过程结束,并输出明文3243f6a8885a308d313198a2e0370734。

对比图3与图4仿真测试结果可知,加解密运算的功能正确,即解密运算能够正确地解出加密运算的密文。解密运算模块使用DC进行综合和优化后面积不超过25 000个等效门。其中组合逻辑面积为10 495门,非组合逻辑面积为14 142门。由于密钥扩展与解密过程不是同步进行,占用了寄存器存储解密过程所需的10轮子密钥,所以非组合逻辑面积比加密运算模块大。但需要指出,由于加/解密运算模块部分电路采用复用的方法实现,所以整个加/解密运算模块的实际总面积比没有复用时减小。

4 结 语

根据设计思路和优化措施, 本文使用Verilog硬件描述语言实现AES密码算法, 并在ModelSim 6.0工具下进行仿真,证明本文设计的正确性。为了更进一步做比较,证明本文设计思路的合理性和优化措施的有效性,同样采取未优化的设计方案实现了该算法,通过在DC中进行综合、布线,两相比较, 优化后的设计比优化前节省了22%的逻辑单元,处理速度提高了13%。

参考文献

[1]黄小苑,戴紫彬.基于FPGA的AES算法芯片设计实现[J].微电子学与计算机,2005,22(8):62-64.

[2]DAEMENJoan,RIJ MEN Vincent.高级加密标准(AES)算法:Rijndael的设计[M].谷大武,徐胜波,译.北京:清华大学出版社,1996.

[3]卢开澄.计算机密码学:计算机网络中的数据保密与安全[M].北京:清华大学出版社,1998.

[4]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

[5]Joint Technical Committee.ISO/IEC14443(Part1-Part4)i-dentification cards-contactless integrated circuit(s)cards-Proximity cards[S].[2001-07-15].http://webstore.jec.ch/preview.

[6]MORIOKA S,SATOH A.An optimized S-box circuit ar-chitecture for low power AES design[C]//Proc.of CHES.[S.l.]:CHES,2003:172-186.

[7]陈俊,王晶,曾晓洋,等.低复杂度先进密码算法的VLSI实现[J].计算机工程,2007,33(4):143-145.

[8]吴亚联,段斌.AES密码计算构件的设计及应用[J].计算机工程,2005,31(21):181-186.

[9]蔡宇东,沈海斌,严晓浪.AES算法的高速实现[J].微电子与计算机,2004,20(1):83-85.

篇7:有关密码算法的论文

(1)机密性(Confidentiality)或保密性(Privacy),保证只有授权主体才能理解所保护的数据。

(2)认证性(Authentication),保证主体身份或数据源是真实的。

(3)完整性,保证传输或存储的数据未曾被未授权主体篡改。

(4)接入控制,保证只有授权主体可以接入受保护的资源。

(5)不可否认性(Nonrepudiation),保证主体不能否认他对数据曾采取的动作(例如制作、发送、接收等)。

除了以上几个常见的安全业务外,还有一些特殊需求的安全业务,如:

(1)匿名性(Anonymity),保证主体的身份不被泄露。

(2)新鲜性(Freshness),保证数据不是过去记录的重放。

(3)公证(Notarization),所有参与方所信赖第3方可对争议进行仲裁。

(4)不可追踪性(untraceability),保证主体的身份或者位置不被跟踪。□

密码体制

密码体制是实施密码变换的基本方式,从原理上可分为两大类,即单钥体制和双钥体制。单钥体制又称为传统密码体制或对称密码体制,双钥体制又称为公钥密码体制或非对称密码体制。

单钥体制的加密密钥和解密密钥相同。系统的保密性主要取决于密钥的安全性,必须通过安全可靠的途径(如信使递送)将密钥送至收端。如何产生满足保密要求的密钥是这类体制设计和实现的主要课题。单钥体制对明文消息加密有两种方式:一是明文消息按字符(如二元数字)逐位地加密,称之为流密码;另一种是将明文消息分组(含有多个字符),逐组地进行加密,称之为分组密码。

双钥体制是由Diffie和Hellman在1976年引入的。采用双钥体制的每个用户都有一对选定的密钥:一个是可以公开的,另一个则是秘密的。公开的密钥可以像电话号码一样进行注册公布。双钥密码体制的主要特点是将加密和解密能力分开,因而可以实现多个用户加密的消息只能由一个用户解读,或只能由一个用户加密消息而使多个用户可以解读。前者可用于公共网络中实现保密通信,而后者可用于认证系统中对消息进行数字签字。双钥体制特别适用于多用户通信网,它大大减少了多用户之间通信所需的密钥量,便于密钥管理。这一体制的出现是密码学研究中的一项重大突破,它是现代密码学诞生的标志之一。□

密码算法

密码算法是精心设计的程序、一系列规则或步骤,用于产生加、解密用的密钥流或实现明、密文变换。

密码算法可分为两大类,即基于数学的密码算法和基于非数学的密码算法。当前实用的算法大多是前者。后者有基于物理的算法,如量子密码,当量子、DNA计算机真正实用时,它在信息安全中将起重要作用。

基于数学的密码算法可按密码体制划分为单钥密码算法和双钥密码算法。又分为流密码算法和分组密码算法。当前,流密码只有少数标准算法,如RC-4、GSM用的A5、第3代移动通信用的Kasumi算法等;分组密码算法已制定出多种标准,如DES、3DES、EDE-3DES、IDEA、RC-5、AES等。

双钥密码算法有基于大整数分解的如RSA算法、基于有限域上离散对数的如ElGamal算法、基于椭圆曲线上离散对数的ECC算法、基于计算复杂性理论中背包问题的背包密码算法、基于纠错码理论的McElice算法、基于有限自动机理论的FA算法、基于二次剩余理论的Rabin算法、基于数论中Lucas序列的LUC算法。此外还有概率加密算法、秘密分享密码算法、各种基于零知识证明的身份识别算法以及满足各种特殊要求的数字签字算法。

篇8:有关密码算法的论文

信息安全一直是与我们生活息息相关的重要问题,而保护信息安全最常用的手段就是数据加密了。自K.Aihara等人提出混沌神经网络模型以来,混沌与神经网络相结合应用于数据加密就得到了不断发展。目前主要的研究方法有:(1)采用已知的混沌序列来训练神经网络模型,使得神经网络能够近似生成相同的混沌序列,然后将已知的混沌序列作为公钥,训练好的神经网络权重和阈值参数作为私钥,实现数据加密。(2)利用离散Hopfield网络的混沌吸引性和初始状态与吸引子的单向映射性,可以将离散Hopfield网络的稳定吸引子作为密钥实现加密。文献[1]将神经网络互学习模型与混沌系统融合互扰,提出了一种新型复合流密码。文献[2]把Diffe-Hellman密钥交换协议和流密码算法相结合,设计了一种基于神经网络混沌吸引子的混合加密算法。文献[3]将Hermite正交多项式引入到神经网络激励层,实现了“一次一密”异步加密算法。文献[4]利用Hopfield网络的混沌吸引性与线性反馈移位寄存器相结合,提出了一种流密码加密方案。将混沌与神经网络相结合应用于数据加密最主要的就是利用混沌序列的混沌特性了,但是文献[5]也指出了混沌序列在数据加密中存在序列被重构缺陷,而且文献[6]对Logistic方程的四点和十六点序列片段完全实现了重构。因此,简单的混沌序列加密方法是存在被破解的风险的。针对这个问题,本文引入一种外部密钥对Logistic方程进行加密,同时提出一种分段线性混沌神经网络模型,通过一种敏感和扩散处理,使得混沌网络模型也具有良好的敏感性,生成良好的随机序列。

1 Logistic映射

Logistic映射是经典的混沌序列映射,由于其实现方法简单,容易被窃密者利用相空间进行重构,从而构造出混沌方程的形式[7]。因此,本文为了增强Logistic映射的保密性,引入一个外部密钥对Logistic映射的初始值和参数进行加密。

采用24位的二进制数字K1作为一个外部密钥来初始化Logistic映射的初始值和参数。设K1的16进制表示为K1=k1k2k3k4k5k6,″k1k2k3k4k5k6″为外部密钥。其中″k1k2k3″用于生成Logistic映射的输入控制参数r,″k4k5k6″用于生成Logistic映射的初始值X0。

在本文中,使用的Logistic映射如下:

其中:r为输入控制参数,X0为Logistic映射的初始值。它们由外部密钥经过运算产生,运算过程中″k1k2k3k4k5k6″分别转化为相应的十进制数进行运算。因此:

2 混沌神经网络模型

本文采用的混沌神经网络结构如图1所示,网络的输入层对数据进行预处理,每一层的传输函数由函数f(·)和g(·)组合构成,实现对输入的数据进行混沌处理。

图1 混沌神经网络结构图

设二进制密钥K2长度为16 bit,将其按行二维化分组,每一行为一组,形成4×4的二进制数据矩阵D1:

每一行数据为一组,共有4组,分别为D11、D12、D13、D14。在本文中,为了提高密钥K2的敏感性,分别对D11、D12、D13、D14作如下处理:

设D11、D12、D13、D14的十进制表示分别为h1、h2、h3、h4,则:

其中:X为Logistic方程生成的值,n0为区间[50,100]上的整数。

由于X的取值在区间(0,1)上,因此的值也在区间(0,1)上。为了将的值扩散,使得的部分值不在区间(0,1)上,引入4×4矩阵W来扩散,其中矩阵W的元素由Logistic方程生成的序列来初始化。因此,变换后的矩阵为:

将变换后的数据输入到混沌神经网络,则:

其中,是网络第一层的输入,W1和B1分别是第一层神经元的权值和阈值,函数g(·)的数学模型描述如下:

其中α为函数g(·)的参数。

函数g(x)将区间(-∞,∞)上的数映射到区间(0,1)上。混沌网络的传输函数f(·)为一个分段线性混沌映射函数,其输入值要求在区间(0,1)上,这与函数g(·)的映射区间刚好吻合。n1表示函数f(·)的迭代次数,Q1为函数f(·)的控制参数矩阵,传输函数f(·)的数学模型描述如下:

其中:x(k)是混沌映射的状态,q是控制参数,并且0<x(k)<1,0<q<1。当q=0.5时,上述混沌映射模型的Lyapunov指数最大,其混沌特性最为明显[8]

其中,D2是网络第二层的输入,W2和B2分别是第二层神经元的权值和阈值;n2表示函数f(·)的迭代次数,Q2为函数f(·)的控制参数。

由于网络的每一个神经元输出值都在区间(0,1)上,因此可以采用如下方法来更新控制参数Q1、Q2的值,通过网络运算得到不同的随机值D3。

每运行一次混沌网络,都会生成一个随机值D3,并更新Q1和Q2的值。利用更新后的Q1和Q2重复运行混沌网络就可以得到由随机值D3组成的随机序列。

3 量化处理

为了将混沌网络生成的随机序列应用于数据加密,本文引入转换函数T(x),使生成的随机序列转换为0-1随机序列,T(x)定义如下:

其中:N为区间[10,+∞]上的整数,n为区间上的整数,

由于网络生成的随机值在区间(0,1)上,因此本文将区间(0,1)分成N等份,N值越大,(0,1)区间划分越精细,数据精度越高。

4 生成0-1随机序列

(1)输入密钥K1来初始化Logistic映射,并迭代运算Logistic映射200次,设X=[x101x102x103…x199x200]用于存储后面100次的混沌值。

(2)利用X来初始化扩散矩阵W和混沌网络的权值与阈值。W是4×4的矩阵,W1是2×4的矩阵,B1是2×1的矩阵,W2是1×2的矩阵,B2是1×1的矩阵,从X中提取元素来分别初始化W、W1、B1、W2、B2。

(3)输入密钥K2,经过初始分组和变换得到

(4)将输入到混沌神经网络,经过网络运算得到一位随机值D3;然后不断更新控制参数Q1、Q2的值,直到得到所需长度的随机值序列。

(5)通过量化函数T(x)将生成的随机序列转换成相应的二进制随机序列。

5 算法分析

本文通过理论分析和实验仿真的方法来对算法的密钥空间大小、0/1的个数统计、随机序列的相关性和密钥的敏感性进行分析,并得出相应结论。仿真实验数据如下:

5.1 密钥空间分析

本文的加密密钥由K1和K2组成,密钥空间由K1和K2的长度决定。设它们的长度分别为L1和L2,则密钥空间为2(L1+L2)。L1+L2越大,密钥空间越大。在本文中L1=24、L2=16,密钥空间大小为240。显然,L2的长度大小是可变的,增加L2的长度可以增加密钥空间大小。但是,增加密钥L2的长度时,混沌网络的输入个数也会增多,相应的混沌网络层数也会增多,网络迭代运行一次的时间开销将会增大。当生成的随机序列长度非常大时,整个网络运行的时间开销将会是非常大的。

5.2 统计分析

一个有效的二进制随机序列必须满足0/1比例近似相等[9]。因此,本检验的目的是确定序列中0/1的比例是否与真正的随机序列中的0/1的比例近似相等。同时,本文参考文献[12]的方法对生成的随机序列进行频数检验、序列检验和游程检验。

为此,随机选取两个长度为256的随机序列进行统计分析,分析结果如表1所示。

表1 统计分析结果

由表1可以看出,序列1和序列2中“0”与“1”的个数接近相等,满足随机序列要求。同时,频数检验值y1均小于3.84,能通过频数检验;序列检验值y2均小于5.99,能通过序列检验;游程检验值y3远小于1.96,能通过游程检验。因此,生成的随机序列具有很好的随机性。

为了进一步验证生成序列的随机性,本文将上述随机选取的两组随机序列与文献[11,12]中的统计分析结果进行比较。文献[11,12]的统计分析结果如表2所示。

表2 文献#xref_id=197#统计分析结果

由表1和表2可以看出,本文生成的随机序列中“0”与“1”的相差个数要比文献[12]中“0”与“1”的相差个数更小。因此,本文生成的0/1序列随机性更好。同时,本文的频数检验值y1、序列检验值y2和游程检验值y3均小于文献[12]中对应的值。因此,本文生成的0/1序列能够更好地通过频数检验、序列检验和游程检验。与文献[11]相比,本文生成的随机序列中“0”与“1”的相差个数接近文献[11]中“0”与“1”的相差个数。同时,本文的频数检验值y1和游程检验值y3在有些情况下小于文献[11]中对应的值,说明本文生成的0/1序列在有些情况下能够更好地通过频数检验和游程检验。但是,本文的序列检验值y2均大于文献[11]中对应的值,说明文献[11]中生成的0/1序列能够更好地通过序列检验。总体上来说,本文算法在频数检验、序列检验和游程检验中优于文献[12],在有些情况下优于文献[11]

5.3 相关性分析

序列的自相关函数变化越小,说明序列的随机性越好。序列的互相关函数越接近零,说明两个序列越互不相关[10]。图2是初始密钥为K1和K2时生成的0/1序列的自相关函数图。图3是密钥K1或K2随机改变一位时生成的0/1序列对比图,实线代表原序列,虚线代表新序列。图4是两个序列的互相关函数图。

图2 生成0-1序列的自相关函数图

图3 密钥改变一位时生成的0/1序列对比图

图4 序列的互相关函数图

由图2可以看出,自相关函数变化很小,生成的序列随机性良好。由图3可以看出,只要改变密钥K1或K2中的一位,生成的0/1序列将会有很大的不同;由图4可以看出,改变密钥K1或K2中的一位时,生成的新序列与原序列的互相关函数值接近0,说明两个序列互不相关。

5.4 密钥敏感性分析

Logistic映射生成的混沌序列对初始值具有良好的敏感性,由于密钥K1用于生成Logistic方程的初始值,因此K1也具有良好的敏感性。同时,本文利用Logistic映射对密钥K2进行了敏感和扩散处理,使得K2也具有良好的敏感性。为了验证密钥K1和K2的敏感性,分别改变密钥K1、K2中的一位,并统计新随机序列与原随机序列的不同位数所占的百分比。设i表示K1和K2中每一位对应的位置编号,则1≤i≤Lg,Lg为密钥K1和K2的长度总和。在本文中,Lg=40。NP表示新随机序列与原随机序列的不同位数占序列总数的百分比,NP的计算公式为:

其中,D(n)和D'(n)分别表示原随机序列和新随机序列,NK表示序列D(n)的总位数,NP(i)表示改变第i位时所对应的百分比。

根据分组密码测度中的严格雪崩准则,改变密钥中的任一比特,应导致密文中大约50%比特的变化。图5是对密钥长度Lg=40,生成序列长度NK=20 000时得到的百分比统计结果。

图5 密钥改变一位时生成的序列所改变的百分比

由图5可以看出,密钥改变一位时生成的序列所改变的百分比均接近50%,满足严格雪崩准则。因此,密钥K1和K2均具有敏感性。

综上所述,本文算法生成的0/1序列具有良好的随机性,密钥具有很强的敏感性。此外,本文采用24位的外部密钥来生成混沌初值和控制参数,与文献[13]直接采用混沌初值和控制参数作为密钥相比,本文的密钥更方便管理。同时,解决了文献[6]提出的Logistic序列易被重构的问题,使得密钥的安全性更好。

6 结语

篇9:有关密码算法的论文

关键词:密码学;教学;算法;简化

中图分类号:TP309文献标识码:A文章编号:1009-3044(2007)12-21734-01

Design of Simplified Algorithm and It's Application in Cryptography Course Teaching

LI Yan-jun, OU Hai-wen, MAO Ming

(Beijing Electronic Science and Technology Institute,Beijing 100070, China)

Abstract:In the Cryptography course teaching, S-DES is a successful case of simplified algorithm. In this paper, according to the train of thought, we simplify and design the MD5 algorithm and others. The teaching practice proved it can reduce the study difficulty, raise the interest of students and improve teaching effect.

Key words:Cryptography course; teaching; algorithm; simplify

21世纪以来,随着计算机和网络进一步渗入人们的日常生活,网络中的安全问题越来越受到关注。于是随之产生了信息安全专业这一新兴学科,由于密码技术是信息安全中的关键和核心,《密码学》课程也就成为了信息安全专业课程建设中的重点。由于在各类教材中出现的密码算法一般都是国际上通用的一些算法,理论基础深厚,算法本身也比较繁琐,在教学中通常遇到教师讲得口干舌燥,学生听得昏昏欲睡,普遍反映密码学太高深,太难学了。如何让密码学更简单地被学生接受?笔者认为首先要解决的问题就是简化繁琐复杂的密码算法,去掉算法中重复的步骤,提取出算法的数学原理,然后用简单的流程图说明复杂的算法过程。

在这一方面,S-DES的设计是一个成功的例子,把64比特的明文输入缩小到8比特,16轮的加解密过程同样缩小了8倍。于是出现在学生面前的就不再是64比特明文经过16轮加密的算法,而是8比特明文经过2轮加密的算法,S-DES没有改变DES的算法原理,但是更简洁,也更容易被初学者接受。根据S-DES这个思路,我们对MD5等算法也做了简化,并进行了设计和实现。这里以MD5为例,將我们的工作做简要介绍。

1 MD5的简化

对简化MD5算法简要的叙述为:简化MD5以32位分组来处理输入的信息,且每一分组被划分为16个2bit位子分组,经过了一系列的处理后,算法的输出由四个2bit位分组组成,将这四个2bit位分组级联后将生成一个8bit位散列值。

它也可简单归纳为三句话:(1)输入:任意长度的报文;(2)输入分组长度:32 bit;(3)输出:8 bit 报文。

2 简化 MD5算法的设计

2.1 简化MD5算法的设计流程

由于设计的是8bit输出的简化MD5,所以定义的四个初始化链接变量都为2bit,分组采用的是32bit分组,这样才能保证输出为8bit,每轮压缩函数都能进行16次操作,而又不改变原来MD5的原理。简化MD5产生报文摘要的过程如图1所示。单个 32-bit 分组的简化 MD5 处理过程如图2所示。

T表为:

其中,a,b,c,d = 缓冲区的四个2bit的链接变量,以一个给定的次序排列。

g = 基本逻辑函数F,G,H,I之一。

<<

X[k] = M[q×16 + k] = 在第q个32位数据块中的第k个2bit位。

T[i] = 表T中的第i个2bit位。

+ = 模 2的加。

来分别对应上面的四个压缩函数。

X[0..15]:保存当前32bit待处理输入分组的值。

X[k] = M[q×16 + k] = 在第q个32位数据块中的第k个2bit位。

每次循环(4)的每步(16)内,X[i]的使用顺序各不相同。

2.2 设计说明

简化MD5算法的设计,一般都认为是在原来输出的基础上,任意再选择几位输出,就认为是简化了,其实这是设计的一个误区。不过再应用MD5的时候可以这样做,因为这也是对MD5的一个应用。

在设计时要真正理解MD5的原理,比如从第二个分组开始就要考虑到链接变量的变化。它不再是简单的上一个压缩函数的输出,而是还要再加上原来的初始化变量。这一点容易在设计时被忽略。

简化MD5的设计完全不用考虑到算法的完全性。这一点在设计时容易对设计者产生误导,不利于设计者自由发挥。对于设计者只有走出这个误区,才能设计出自己满意的简化算法。

设计时尽量和MD5原理保持一致,因为这样会使自己在实现时变得简单许多。

3 结束语

如果把MD5算法比成黑匣子的话,那么简化MD5算法出现将会让这个黑匣子变得更加透明。算法本身是为教学设计的,所以它的主要作用还是教学方面,因此,我们对其他一些算法如AES、SHA1等算法也进行了简化和设计,并在实际的《密码学》教学中进行应用。

算法的简化可以让学生更容易接受,使其中的运算过程变得更加直观与形象。由于二者在原理上是相通的,理解了简化算法,也就相应理解了原算法。经过实际的教学检验,学生反映密码算法变得容易学了,学习《密码学》的兴趣和积极性明显提高,教学效果得到了较大改善。

参考文献:

[1]黄刚,于林. FLASH MX标准教程[M]. 北京:北京希望电子出版社,2002.

[2]颜金桫.KCL小土豆工作室[M].FLASH MX 2004ActionScript 2.0与RIA应用程序开发[M]. 北京:电子工业出版社,2005.

[3]陈鲁生,沈世镒. 现代密码学[M]. 北京:科学出版社,2002.

[4]毛明. 大众密码学[M]. 北京:高等教育出版社,2005.

[5]杨波. 现代密码学[M]. 北京:清华大学出版社,2003.

上一篇:自作多情经典说说下一篇:扶贫资金审计常见问题