使用DES实现真实数据加密的前奏(分析)
来源:互联网 发布:程序员可以自学吗 编辑:程序博客网 时间:2024/06/05 18:33
上篇文章里面用java实现了DES的核心算法,并且对外提供了一个比较简单的接口,可以直接使用,不过有一个问题就是这个算法只是核心,只能实现对64位二进制进行加密。所以要在实际状况下使用的话需要进行预处理才行。 所谓预处理就是把真是的数据,比如字符串,数据,等不定长的内容转换成分组的每组64位二进制数据组。然后再进行分组加密,最后结果合并得到加密数据,当然了,为了不让别人看出来最后的二进制密文,你可以把这些分组的数据再转换成字符串或者什么格式的就行了。 预处理过程: 2. 把8位的byte数组转换成为64位的二进制数组 //把生成的8个数字转成二进制存到sValue中 3. 在进行解密的时候要把填充位去掉 这样基础部分就分析完了,剩下工作就是用java实现了。
1. 转换成每组8位的byte数组
首先将字符串进行转换,转换成byte数组,并且数组长度要是8的整数倍,因为要按照8位来分组。不够8位的要补齐8位。并且填充位赋值为它所缺少的位数。
先要保证byte数组中的每个byte位都要大于0,这样在进行二进制转换的时候才不会出问题。如果小于0需要进行变换,因为每个byte是8bit,在转换成的时候不需要考虑符号位,因此如果小于0需要对其加256(即2的8次幂),这样转换成二进制。至于怎么转换成二进制你可以参考上篇文章里面的源代码,这里贴出来一点:
for (int j = 0; j < 4; j++) {
sValue[((i * 4) + 3) - j] = sBoxData[i] % 2;
sBoxData[i] = sBoxData[i] / 2;
}
在上面步骤中为了满足八位的需求对不够八位的进行了补齐操作,因此在解密时需要把填充位去掉。那么去掉多少填充位呢?根据扩充时对填充位的赋值可以得到填充了多少位。(这里我计算了半天,发现其实很简单,因为你填充位进行加密之后再解密数据还是一样的。)这样就得到了解密后的序列,然后转换成字符串或者是其他需要的格式就ok了。
- 使用DES实现真实数据加密的前奏(分析)
- 使用java实现真实数据DES加密(java源代码)
- java使用DES加密方式,实现对数据的加密解密
- Oracle透明数据加密(TDE)真实环境使用分析
- 使用CryptoPP实现DES加密
- 使用DES数据加密与解密的java代码
- javascript实现的DES加密
- java实现的des加密
- DES加密的python实现
- VC实现数据的加密和解密(MD5加密/DES/RSA加密解密)
- 使用的DES对称加密
- 使用的DES对称加密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- 使用 DES 算法对数据加密
- 使用 DES 算法对数据加密
- 打开 存盘 对话框 弹出 变慢 的原因
- C# 空值的问题
- kangle代理服务器软件
- 庆祝一下!我的CSDN博客(BlackBerry开发专栏)终于闯进排名2万内
- C++知识点
- 使用DES实现真实数据加密的前奏(分析)
- 使用java实现真实数据DES加密(java源代码)
- 随记
- Java2D+3D游戏王(Yo-Gi-Oh!)开发日志1
- I cannot put up with my noisy roommates.
- 研究一段时间的游戏算法了
- 新人报道
- 我看设计模式
- 异常处理相关 try/finally语句