DES加密算法的一种简单实现

王朝java/jsp·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

写了三种算法,最近没什么事情,想整理一下放上来,万一哪天丢了还能在CSDN这里找回来。不过说实话CSDN的稳定性也很令人怀疑。

DES算法的简单说明

DES的每个分组是64位,既明文和密钥都是64位(密钥实际用56位,每字节第8位为校验)。这个算法的核心是Feistel密码,由于其设计的巧妙,加密解密都用一个函数,具体原理请查阅其他资料。DES的流程基本是执行16轮下面的运算:

1 初始变换Initial Permutation

2 右边32位f函数

2.1 E置换

2.2 与轮密钥XOR

2.3 S盒替换

2.4 P置换

2.5 和左边32位XOR

3 左右交换,最终变换final permutation

需要特别注意的是,最后一轮是不需要做左右交换这一部的,有的书在这个问题上写得不够明确,逼得我当时手算了一遍,还好只是64位。

实现分析

可以看出DES里到处都是基于bit的置换,所以我的实现是把明文的64位拆开保存在数组里,再写一个专门处理置换的函数。

private int[] permutation(int[] initial, int[] perm)

{

int[] result = new int[perm.length];

for(int i=0; i<result.length; i++)

{

result[i]=initial[perm[i]-1];

}

return result;

}

剩下的事情就是照着书上的算法描述实现就可以了。

我还是不会写东西.........

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航