DES(Data Encryption Standard)采用64位的分组长度和56位的密钥长度。它将64位的输入经过一系列变换得到64为的输出。解密使用相同的步骤和相同的密钥,唯一不同的是密钥顺序与加密过程相反。
DES加密:
该算法的输入有需要加密的明文和加密使用的密钥,二者长度都为64位。其中密钥的第8,16,24,32,40,48,56,64位为奇偶校验位。
1、明文的处理
将明文读入程序并将其化为二进制串
def inputText(filename):
with open(filename,'r')as f:
text = f.read()
text = text.split('\n')
text = [eval(x) for x in text]
text = ['{:08b}'.format(x) for x in text]
text = ''.join(text)
return text
对明文进行IP置换,并划分为左右两个子串
def IP_Transposition(plaintext):
LR = []
for i in IP:
LR.append(int(plaintext[i-1]))
L = LR[:32]
R = LR[32:]
return L,R
2、对密钥的处理
将密钥读入程序并以二进制串的形式存储
对密钥进行PC-1置换,并划分为两个子串
#密钥置换
def Key_Transposition(k