DES加密的一点思考(一)

本文探讨了DES加密中两种不同的密钥生成方法,并对比了它们产生的密钥差异。通过实例说明了每种方法的具体步骤,强调了密钥生成过程中奇偶校验位的作用及不同方法对最终密钥的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  虽然比着那个DES加密类写出了DES的demo,但是心中的疑云并没有减少,相反,随着不断的深入,不断的加重。本来以为之前花了2天来搞定了demo,就已经懂了许多,但今天中午开始的琢磨,又让我更加苦恼了。

 

   对于DES密钥的产生过程有些困惑。有的说,是对初始的64个bit的密钥,去掉每个字节的第8位。有的是一开始就用56bit的密钥,然后根据每7位 中的1的奇偶个数来增加1位,扩充到64位后再用置换表(pc-1)来缩减到56位。然后之后的循环操作等就都是一样了。这样用到的表都是一样的,产生的 密钥我测试了,不同啊。这点让我困惑不已。看来,密钥的产生是可以多种思路的。

 

  “每个字节的第8位为奇偶校验位。不参与运算。”

  上述2种产生方法里。

 

   先考虑后者。假如原始key为 science 。对应的为 73 63 69 65 6e 63 65 。然后转为二进制后,按每7个进行分组,分得8组,然后假如奇偶校验位,然后打乱(就是置换选择PC表)最后就出现了那个神奇的56bit的密钥,接着是 循环,然后再打乱(这里是压缩选择CP表)。

  第一轮出现的结果是2d d8 ce 37 7f 40

 

  考虑前者的情况。假如原始key为science。因为不足8个bit,所以会补0。然后这个比较方便,直接按照PC表来。其实,仔细观察表,里面舍弃的就是每个字节第8位的那个值。然后也是利用压缩表来压缩到48bit。

  第一轮出现的结果是e0 be 03 3f 03 80

 

 

  当然,其实无所谓哪种思路来产生密钥,只要加密和解密双方使用同样的产生密钥的方法就OK了。(前提是使用对称式加密)。在深入捣鼓DES的时候,受到了不少的挫折,但也对基础知识的了解增加了不少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值