来源:技术为王博客 小马 作者:中国一卡通网 收编 发布时间:2010-11-15 14:21:21 字体:[大 中 小]
摘 要:Des是在金融电子领域用的比较多的一种加解密算法, 比如POS,ATM,智能IC卡等领域.
上面这8个表格,分别对应a~h, 注意a~h都是6位,表示成整数范围为0~63, 所以把它们换成整数都能在上面各自对应的表格中找到一个4位的值. 举个例子:
a=57, 在表1中找到57对应的位置是0x3, 则a=0x3.
经过这样变换后,a~h都从原来的6位变为4位,再把它们拼起来,生成一个32的数,表示为
Right=r1r2…r32
再把这个32位的数,各个位换一下位置,换位的规则按照下面的表格:
也就是新数据的第1位为原数据的16位,依次类推. 新生成的数据为:
Right=r16r7…r25
然后,把这个right和left异或,结果给right, right原来的值给left. 这样得到一对新的left和right.
还记得前面的<迭代标志>吗,用新计算的left和right重新回到<迭代标志>,做同样的操作,一共迭代16次, 每一次都是用前一次得到的left和right, 但要记得中间有一步要用到key(i)做异或, 这个i就是迭代的次数.
假设第16迭代后,得到的分别是left(16), right(16), 则新的数据为
Data=right(16)left(16), 注意这里不是left(16)right(16).
新的data是一个64位的数, 按照下面的表格,调整一下各个位的位置,
Data=d40d8…d25.
这个data就是加密后的数据。
最后说一下如何解密,des是一种对称的加密算法,也就是加密,解密是同一人密钥, 算法也相同,唯一不同的就是, 在数据迭代时,第一次用key(16),第二次用key(15),依次类推,一直到key(1).
另外,现在有一些des算法的变种,也比较流行,典型的一个就是3des.它的原理可以简单描述如下:
有三个56位长度的密钥(8字节), 分别为key1, key2, key3.
第一步,用key1对数据加密.
第二步,用key2解密.
第三步, 用key3加密
三个key如果不相等, 相当于密钥长度是168位,这样就更加安全。
推荐文章
论坛热帖