作者nightwolf013 (阿耀要不要)
看板AndroidDev
标题Re: [问题] 有关於triple des加解密
时间Thu May 24 10:50:57 2012
小弟有事先看过wiki的des及3des的说明
不过还是不太了解,
附上之前找到的文章:
http://blog.csdn.net/randyjiawenjie/article/details/6617225
这是对岸写的,有试过,在手机上执行起来应该是对的
(因为我不知道该怎麽去试那一段密文是否符合DES的规则)
附上wiki解释的加解密:
1.加密 : 密文 = EK3(DK2(EK1(平文)))
2.解密 : 平文 = DK1(EK2(DK3(密文)))
E=encrypt(加密) D=decrypt (解密)
个人对这段话的理解:
加密:
1.平文先加上一段key然後做加密, 得到EK1
2.EK1解密一次得到DK2 (这里就不是很懂了,为什麽要加密再解密~这样DK2不是就=平文?)
3.解密完後的DK2再加上key2後加密成为EK3
解密:
反推回去
对这方面实在不了解,所以恳请有经验的前辈帮忙,谢谢
--------------------------------------------------------------------------
似乎自己发现了自己盲点在哪:
wiki中提到一句话:
3DES使用「密钥包」,其包含3个DES密钥,K1,K2和K3,均为56位(除去奇偶校验位)
(不懂什麽是奇偶校验位)
从这句话看来从新解一次加密过程
密文 = EK3(DK2(EK1(平文))
1.平文使用Key1 来做一次加密得到EK1
2.EK1使用Key2解密得到一次DK2
3.DK2使用Key3加密得到EK3 也就是最後要的加密密文
平文 = DK1(EK2(DK3(密文)))
1.将之前使用3DES加密的平文,使用key3解密一次得到DK3
2.将DK3使用key2加密一次,得到EK2
3.将EK2使用key1解密得到DK1 = 平文
以上是小弟的理解,错误请鞭小力点,
如果没错的话希望这段文章可以帮忙到以後有需要的人^^
-----------------------------------------------------------------
试了一下,直接使用上面所说的des文章,
照上面所想的做了一下,
发现在第一阶段完後就会直接catch Exception後跳出了,
後来查阅了一下java中3des的做法
将DES.java档中的
SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
改为
SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DESede");
结果依然是在第二步的地方,要取得dk2的时候就跳到catch exception
(原因是因为dk2会=null)
不知道这里下一步该怎麽解决...恳请大大们帮忙QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.192.224
※ 编辑: nightwolf013 来自: 59.120.192.224 (05/24 11:00)
※ 编辑: nightwolf013 来自: 59.120.192.224 (05/24 11:54)