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

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
 

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

DES算法的简单说明

DES的每个分组是64位,既明文和密钥都是64位(密钥实际用56位,每字节第8位为校验)。这个算法的核心是Feistel密码,由于其设计的巧妙,加密解密都用一个函数,具体原理请查阅其他资料。DES的流程基本是执行16轮下面的运算:   1 初始变换Initial Permutation   2 右边32f函数      2.1 E置换      2.2 与轮密钥XOR      2.3 S盒替换      2.4 P置换      2.5 和左边32XOR   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;     }剩下的事情就是照着书上的算法描述实现就可以了。

我还是不会写东西......... <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值