在信息安全保密日益严峻的形势下,信息的存储安全作为信息安全的一个重要方面,被关注的程度远远不够。信息加密技术作为信息安全最有效的方法之一,可通过不同的加密算法来实现,而加密算法的选取直接影响信息的安全程度,那么我们今天就来给大家介绍一下IDEA加密算法是如何通过编程实现的。
一、IDEA加密算法
1、IDEA加密算法简介
IDEA是一种数据块加密算法,加密的数据块为64 b,密钥长度是128 b。该加密算法在硬件和软件上均可高速进行加解密,而且加密过程与解密过程相同,仅加密密钥与解密密钥不同,他设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥,被认为是目前世界公开的最好最安全的加密算法。虽然密码分析者能对轮数减少的变形做一些分析工作,这么长的密钥在今后若干年内应该是安全的。
IDEA加密算法既用混乱又用扩散,他的设计原则是一种来自于不同代数群的混合运算,且这个代数群进行的运算,无论用硬件还是软件都易于实现;算法输入的64位数据被分成4个16位子分组作为第一轮的输入,总共有8轮迭代。在每一轮中,相互间进行运算同时也与6个16位的子密钥进行运算(每轮均不同),最后还与4个16位的子密钥进行输出变换,产生输出,其中共52个16位的子密钥参与运算。整个算法包括3部分:
(1)子密钥的产生
输入:128 b密钥;
输出:52个16 b的子密钥。
(2)加密过程
输入:52个子密钥和64 b数据;
输出:64 b数据。
(3)解密过程
IDEA加密算法的加密过程与解密过程的子密钥不相同,且二者是一一对应的。
2、IDEA加密算法子密钥的生成
IDEA共需要52个子密钥,每一个有16 b,由128 b密钥生成。自密钥将128 b分成8组,每组16 b,得到k1,k2,…,k8;将128 b循环左移25位后做16 b分组,得到子密钥k9,k10,…,k16;再将这128 b循环左移25位后做同样的分组得到子密钥k17,k18,…,k24;以此类推,直到生成所有的子密钥。
3、IDEA加密算法加密过程
该加密算法中密钥为128 b,明文分组长度是64 b。64 b被分为4个16 b的子块:X1,X2,X3,X4作为第一轮