`
阿尔萨斯
  • 浏览: 4169329 次
社区版块
存档分类
最新评论

IDEA数据加密算法介绍

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

IDEA数据加密算法及实现

作者:成晓旭

IDEA对称数据加密算法,是我2000年刚毕业,工作需要进行数据加密时,学习、实现的第一个标准数据加密算法,并且此后就深深地迷上了数据加密这个方面,以后连续两年潜心学习和研究这方面的知识与技术。在此过程中,非常感谢同事李哥对我的大力帮助,并从此成了很好的朋友。

1、 简介

IDEAInternational Data Encryption Algorithm 的缩写,1990年由瑞士联邦技术学院来学嘉X.J.Lai Massey提出的建议标准算法称作PES( Proposed Encryption Standard) Lai Massey 1992 年进行了改进强化了抗差分分析的能力改称为IDEA 它也是对64bit大小的数据块加密的分组加密算法密钥长度为128位它基于“相异代数群上的混合运算”设计思想算法用硬件和软件实现都很容易且比DES在实现上快的多。IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用。

这种算法是在DES算法的基础上发展出来的,类似于三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点,已经过时。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。

类似于DESIDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。

由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,可极大地促进IDEA的发展和完善。

2、 算法详解:

2.1产生密钥

算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用与输出变换)。首先,将128-位密钥分成816-位子密钥。这些是算法的第一批8个子密钥(第一轮六个,第二轮的头两个)。然后,密钥向左环移x位后再分成8个子密钥。开始4个用在第二轮,后面4个用在第三轮。密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束。具体是:

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

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

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

输入的64-位数据分组被分成416-位子分组:xlX2x3x4。这4个子分组成为算法的第一轮的输入,总共有8轮。在每一轮中,这4个子分组相互相异或,相加,相乘,且与616-位子密钥相异或,相加,相乘。在轮与轮间,第二和第三个子分组交换。最后在输出变换中4个子分组与4个子密钥进行运算。

2.2加、解密过程

  在每一轮中,执行的顺序如下:

  (1)X1和第一个子密钥相乘。

  (2)x2和第二个子密钥相加。

  (3)X3和第三个子密钥相加。

  (4)x4和第四个子密钥相乘。

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

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

  (7)将第(5)步的结果与第五个子密钥相乘。

  (8)将第(6)步和第(7)步的结果相加。

  (9)将第(8)步的结果与第六个子密钥相乘。

  (10)将第(7)步和第(9)步的结果相加。

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

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

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

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

  每一轮的输出是第(11)(12)(13)(14) 步的结果形成的4个子分组。将中间两个分组分组交换(最后一轮除外)后,即为下一轮的输入。

  经过8轮运算之后,有一个最终的输出变换:

  (1) X1和第一个子密钥相乘。

  (2) x2和第二个子密钥相加。

  (3) x3和第三个子密钥相加。

  (4) x4和第四个子密钥相乘。

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

2.3密钥对应图

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 415.5pt; HEIGHT: 187.5pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image001.jpg" o:title="密钥对应表"></imagedata></shape>

2.4加密过程图

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 252pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image003.jpg" o:title="加密过程"></imagedata></shape>

2.5解密过程图

<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 231pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image005.jpg" o:title="解密过程"></imagedata></shape>

3、 评价:

IDEA算法的密钥长度为128位。设计者尽最大努力使该算法不受差分密码分析的影响,数学家已证明IDEA算法在其8圈迭代的第4圈之后便不受差分密码分析的影响了。假定穷举法攻击有效的话,那么即使设计一种每秒种可以试验10亿个密钥的专用芯片,并将10亿片这样的芯片用于此项工作,仍需1013年才能解决问题;另一方面,若用1024片这样的芯片,有可能在一天内找到密钥,不过人们还无法找到足够的硅原子来制造这样一台机器。目前,尚无一片公开发表的试图对IDEA进行密码分析的文章。因此,就现在来看应当说IDEA是非常安全的。

并且,IDEA数据比较RSA算法加、解决速度快得多,又比DES算法要相对安全得多。

4、 参考文献:

《应用密码学(协议算法与C源程序)》:机械工业出版社

5、 源码:




分享到:
评论

相关推荐

    IDEA数据加密算法实现.rar

    IDEA数据加密算法实现.rar

    idea加密算法--经典分组加密

    idea加密算法 idea加密算法 idea加密算法 idea加密算法

    IDEA数据加密算法.pdf

    IDEA数据加密算法.pdf 学习资料 复习资料 教学资源

    论文研究-针对IDEA加密算法的差分功耗攻击.pdf

    研究分析国际数据加密算法IDEA的特点,采用差分功耗分析攻击方式进行密钥破解,针对IDEA算法提出一种基于汉明距离的差分功耗攻击方法。该攻击方法是一种典型的加密芯片旁路攻击方式,其理论基础为集成电路中门电路在...

    数据加密算法

    IDEA国际数据加密算法,使用 128 位密钥提供非常强的安全性;其它数据算法包括一些常用编码算法及其与明文(ASCII、Unicode 等)转换等,如 Base64、Quoted Printable、EBCDIC 等。常见的加密和编码算法都已经在.NET...

    在Oracle数据库中实现的IDEA加密算法

    Lai 和Massey 在1992 年进行了改进强化了抗差分分析的能力改称为IDEA 它也是对64bit大小的数据块加密的分组加密算法密钥长度为128位它基于“相异代数群上的混合运算”设计思想算法用硬件和软件实现都很容易且比DES在...

    国际数据加密算法IDEA

    三种加密运算 两种子密钥运算 IDEA的描述: IDEA算法的安全性 IDEA示范程序 计算乘法逆示范程序

    国际数据加密算法

    一款高效的对称加密算法

    数据加密算法的性能分析

    本文介绍了几种主要的数据加密算法,比如 DES, IDEA , Blowfish , RSA 和 AES 等等,并分析比较了它们各自的性能。 关键词:数据加密, DES , IDEA , Blowfish , RSA , AES ,性能分析

    基于Java实现带图形用户界面的基于数据加密算法的即时聊天系统源码+项目说明+sql数据库.zip

    基于Java实现带图形用户界面的基于数据加密算法的即时聊天系统源码+项目说明+sql数据库.zip 本项目基于 Java 的 Swing 包实现了一个带图形用户界面的基于数据加密算法的即时聊天系统。实现了用户登录及验证、在线...

    组合数据加密算法的研究与实现.pdf

    全性和可霏性、在实现IDEA算法的同时,还改进 并实现了RSA的算法.具体是:1)改进了Miller. Rabin大素数测试算法,大大缩短了测试时间;2)采 用对指数b的二进制数化来实现幂模运算,大大提 高了大整数幂模运算的...

    as3.0 IDEA数据加密方法

    public class IDEA{ public var ory:ByteArray; public var ary:Array; public var dekey:Array; public var enkey:Array; public function IDEA() { ary=new Array(); dekey=new Array(); ...

    IDEA:Java实现的国际数据加密算法

    主意 用Java实现的国际数据加密算法。 项目经过充分测试并使用 TDD 创建。

    数据加密.ppt

    关于数据加密的常用算法分析,包括DES,3DES,IDEA,RSA四种算法的流程分析及优缺点比较。

    Visual C++中调用DLL实现数据加密

    常见的数据加密算法有:DES,IDEA,RSA,ECC,AES,MD5,SHA等。《共享软件加密算法库》是一款针对个人、企业开发共享软件的加密工具,支持Windows平台下各类开发工具:VC、VB、Delphi、PB、VFP等,算法库集成的算法...

    IMAN1超级计算机上并行国际数据加密算法的性能评估-研究论文

    在本文中,并行的国际数据加密算法(IDEA)是安全应用程序之一,它在运行时间,加速和效率方面得到了实现和评估。 并行IDEA已使用消息传递接口(MPI)库实现,结果已使用IMAN1超级计算机进行,其中对不同数据大小...

    对称加密和非对称加密介绍和区别

    对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法...另一个对称密钥加密系统是国际数据加密算法(IDEA)

Global site tag (gtag.js) - Google Analytics