DES是一种将64比特的明文加密成64比特的密文对称密码算法。DES是以64比特的明文为一个单位来进行加密的,这个64比特的单位成为分组,所以DES密码又称为分组密码
DES的基本结构是由Horst Feistel 设计的,因此也称为Feistel网络或Feistel结构,在Feistel网络中加密的哥哥步骤成为轮(round),整个加密过程就是进行若干次轮的循环。如下图所示(来自百度百科): ![des加密流程图](https://img-blog.csdnimg.cn/20201024140443192.png)
下面用具体的代码实现DES的加密,解密的过程完全一样,不过是密钥逆用。
1.首先将将明文和密钥转化为二进制,以64位分一组,最后不足的用0补齐
# 将明文转化为二进制
def str2bin(message):
res = ''
for i in message:
tmp = bin(ord(i))[2:] # 将每个字符转化成二进制
tmp = str('0' * (8 - len(tmp))) + tmp # 补齐8位
res += tmp
if len(res) % 64 != 0:
count = 64 - len(res) % 64 # 不够64位补充0
else:
count = 0
res += '0' * count
return res
# 将密钥转化为二进制
def key2bin(key):
res = ''
for i in key:
tmp = bin(ord(i))[2:] # 将每个字符转化成二进制
tmp = str('0' * (8 - len(tmp))) + tmp # 补齐8位
res += tmp
if len(res) |