网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
本月文章推荐
.JavaScript Associative Arrays.
.SOA核心理念的应用发展.
.SOA: 不能只有“吹捧”.
.数据库设计说明书.
..NET2.0中一种简单的窗口控件状态.
.探究需求管理的本质(1).
.人是最坚固的防火墙.
..NET企业服务器如何在.NET平台上.
.基于VS.NET的自定项目模板研究.
.实现SOA的两个案例.
.GridView控件常见问题及处理方法.
.解析SOA反模式(1).
.测试服务:SOA的完整性和扩展性.
.BEA和Siebel共推SOA.
.跨平台的SOA实施工具BEA AquaLog.
.谈配置管理中人的因素.
.如何编写企业解决方案书.
.ASP 分页操作改良版.
.语音识别在家电遥控器中的应用.
.软件项目需求分析的文档包括的内.

实现基于IDEA算法的加密工具(3)

发表日期:2008-3-23



3.IDEA算法的具体描述

3.1密钥生成

用户输入128位长密钥

Key = k1k2k3…k127k128

IDEA总共进行8轮迭代操作,每轮需要6个子密钥,另外还需要4个额外子密钥,所以总共需要52个子密钥,这个52个子密钥都是从用户输入的128位密钥中扩展出来的.

首先把输入的Key分成8个16位的子密钥, 1~6号子密钥供第一轮加密使用,7~8号子密钥供第二轮使用,然后把这个128位密钥循环左移25位,这样Key = k26k27k28…k24k25

把新生成的Key在分成8个16位的子密钥,1~4号子密钥供第二轮加密使用(前面已经提供了两个)5~8号子密钥供第三轮加密使用 ,到此我们已经得到了16个子密钥,如此继续,当循环左移了5次之后已经生成了48个子密钥,还有四个额外的子密钥需要生成,再次把Key循环左移25位,选取划分出来的8个16位子密钥的前4个作为那4个额外的加密密钥.供加密使用的52个子密钥生成完毕.

K[0]
K[1]
K[2]
K[3]
K[4]
K[5]

K[48]
K[49]
K[50]
K[51]

第一轮

额外密钥  

3.2加密明文

64-位数据分组被分成4个16-位子分组:D0,D1,D2,D3。这4个子分组成为算法的第一轮的输入,总共有8轮。

在第i轮中,假定输入的为:

明文(4组):D0,D1,D2,D3

密钥(6组) K1, K2, K3, K4, K5,K6

执行的顺序如下:


D0和第一个子密钥(K1) 模216+1乘。


D1和第二个子密钥(K2) 模216加。


D2和第三个子密钥(K3) 模216加。


D4和第四个子密钥(K4) 模216+1乘。


第(1)步和第(3)步的结果相异或。


将第(2)步和第(4)步的结果相异或。


将第(5)步的结果与第五个子密钥(K5) 模216+1乘。


将第(6)步和第(7)步的结果模216加。


将第(8)步的结果与第六个子密钥(K6) 模216+1乘。


将第(7)步和第(9)步的结果模216加。


将第(1)步和第(9)步的结果相异或。


将第(3)步和第(9)步的结果相异或。


将第(2)步和第(10)步的结果相异或。


将第(4)步和第(10)步的结果相异或。

  将第(11)、(12)、(13)和(14) 步的结果形成的4个子分组D0,D1,D2,D3作为输出,然后将中间两个分组(D1,D2)交换(最后一轮除外)后,作为为下一轮的输入。

  经过8轮运算之后,有一个最终的输出D0,D1,D2,D3,对这4个输出子分组进行如下操作:

  (1) D0和第一个额外子密钥模216+1乘。

  (2) D1和第二个额外子密钥模216加。

  (3) D2和第三个额外子密钥模216加。

  (4) D3和第四个额外子密钥模216+1乘。

  最后,这4个子分组重新连接到一起产生密文。

上一篇:实现基于IDEA算法的加密工具(5) 人气:804
下一篇:Mozilla开发组的开发策略(英文) 人气:453
浏览全部软件工程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐