有关3DES加解密过程密钥使用的问题
我在实现的3DES加解密算法时,遇到了问题,之前我已经写好了DES加解密算法,因此加密和解密都是正确的,但是在3DES写好后,解密结果不对,怀疑是在密钥使用时出现了问题。具体是这样的:现有密钥K1,K2
加密:原文先用K1加密,得到的结果再用K2解密,得到的结果再用K1加密
解密:密文先用K1解密,得到的结果再用K2加密,得到的结果再用K1解密
看教材时对这个构架很清楚的,但是在实现时,出现了疑问。加密过程中,用K2解密怎么理解?
理解1:是把K2(64位)直接代入DES中的解密模块,经密钥置换选择1后,把得到的56位子密钥经过解密模块的一次次右移,而且右移方案是DES加密模块中左移方案的逆,这样得到解密每一轮的子密钥;
理解2:先把K2按DES加密做一遍,得到16轮后的最终子密钥,然后在3DES加密的DES解密过程中把得到的这个子密钥代入,无需再经过密钥64-〉56位的置换选择,直接进行子密钥的右移,最终得到每一轮的子密钥。
目前我对这个很是迷惑,到底是哪种理解正确呢?或者,还有其他正确的理解?因为我按以上两种方法做了后,答案都不正确,所以很迷惑!
请各位对密码学熟悉的朋友帮助帮助我!
最后,让我们对灾区遇难和受苦的同胞,默哀! --------------------编程问答-------------------- ?网上有这个的源代码那,我毕业设计做的3DES。应该是第一种理解是对的。所谓的3重DES,原理上不需要我讨论,按照原理要求,就类似于做3次DES加密,解密 --------------------编程问答-------------------- 如果你有DES加解密算法的话
假设加密函数 crypt(明文,密文,密钥)
解密函数 decrypt(明文,密文,密钥)
3des密钥 k1 k2
待处理数据 DataIn
最终数据 DataOut
那么加密过程
crypt(DataIn,temp1,k1)
decrypt(temp1,temp2,k2)
crypt(temp2,DataOut,k1)
k1 k2 无需处理 --------------------编程问答-------------------- 原来没注意过3DES的中间那一次,以为三次都是加密呢
顶楼上的
补充:云计算 , 云安全