DES algorithm

来源:互联网 发布:nxpowerlite mac 破解 编辑:程序博客网 时间:2024/06/04 19:37

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,不影响结果!

 

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

原创粉丝点击