DES algorithm

DES 算法的核心思想是混淆和扩散,我们来看它是怎么做来达到这个目地的。

流程:

密钥置换选择1(pc1) ->密钥循环左移表(rot) ->压缩选排阵(pc2)
初选排阵(ip) ->(扩展选排阵(e) ->S-Box阵(s) ->P选排阵(p)->)*16->末选排阵(fp)

置换使得顺序杂乱无章,密钥循环移位,压缩选排和round()(轮函数)中的扩展选排和S-BOX的替换使得每一位都尽可能的扩散到其它位,达到扩散的目地。

刚开始写时思路不是很清晰,而且对STL中的bitset<_N>的理解只是一知半解,害得我走了好多的弯路,尤其注意这一点,对于位串 bitset<6> b("000001");
b[0]不是0而是1,后来干脆自己写了一个bitset<_N>。

 

代码:

bitset.h

 

 

GetBlockCode.h

 

GetKeys.h

 

 

main.cpp

 

round.h

 

StringToBit.h

 

 

variable.h

 

message.in(输入明文)

可自义,只要是文本文件就行!

 

key.in(输入密钥)

可自定义,但我写的DES算法里只取最前面的8个字符做为密钥,不足补NULL,不影响结果!

 

绝对原创,希望大家转载时注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值