2024年Python最全python实现DES算法加解密_python des加解密

#秘钥左移的位数
SHIFT = [1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1]

def read_file():
try:
f = open(r"des.txt",‘r’,encoding = ‘utf-8’)
mess = f.read()
f.close()
print(“文件读取成功”)
return mess
except IOError:
print(“文件读取失败”)

def write_file(message):
try:
os.remove(r"des.txt")
f = open(r"des.txt",‘w’,encoding = ‘utf-8’)
f.write(message)
f.close()
print(“文件写入成功”)
except IOError:
print(“文件写入失败”)

#在分组加解密的时候 我们再bit级上进行操作 ,这里将字符ascii转bit流
def str2bin(message):
# 字符串转2进制(bit流) 每个字符8个bit 不够补0
res = “”
for i in message:
tmp = bin(ord(i))[2:]
for j in range(0,8-len(tmp)):
tmp = ‘0’ + tmp
res += tmp
return res

#初始置换IP
def ip_change(bin_str):
#输入为64位明文消息 输出为经过初始置换IP的64位消息
res = “”
for i in IP_table:
res += bin_str[i-1]
return res

#逆初始置换Ip
def ip_re_change(bin_str):
#输入为经过合并的64位分组消息,输出为64位密文
res = “”
for i in IP_re_table:
res += bin_str[i-1]
return res

#循环左移操作
def left_turn(my_str,num):
# 左移 列表拼接
left_res = my_str[num:len(my_str)]
left_res = left_res + my_str[0:num]
return left_res

#密钥的PC-1置换
def change_key1(my_key):
res = “”
for i in PC_1:
res += my_key[i-1]
return res

#密钥的PC-2置换
def change_key2(my_key):
res = “”
for i in P

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值