先来了解binascii用到的函数
b2a_hex(data),二进制数据转16进制形式

如上图,先用encode()方法将字符串转为二进制,再用b2a_hex()
a2b_hex(data),与上相反。
b2a_base64(data),二进制数据转换为base64的数据。

a2b_base64,与上相反。
binascii.b2a_uu(data),二进制数据转化为一行以ascii编码的字符。

写一个将字符串转为一串码的函数。
def str_code(st):
s=st.encode(‘utf-8’)
ss=binascii.b2a_hex(s)
ss=binascii.b2a_base64(ss)
ss=binascii.b2a_hex(ss)
sts=ss.decode(‘utf-8’) #二进制转为字符串
sst=sts[::-1] #倒序
return sst
再写一个相反的一串码转回字符串。
def code_str(st):
s_t=st[::-1]
ss=binascii.a2b_hex(s_t)
sts=binascii.a2b_base64(ss)
ss=binascii.a2b_hex(sts)
sst=ss.decode(‘utf-8’)
return sst
加入key功能的函数
key转为一串码的另写一个函数
def key_code(st):
s=st.encode(‘utf-8’)
ss=binascii.b2a_uu(s)
ss=binascii.b2a_base64(ss)
ss=binascii.b2a_hex(ss)
sts=ss.decode(‘utf-8’)
sst=sts.replace(‘\n’,”) #去掉换行符
return sst
加密的函数
def enstr(st,k):
sst=str_code(st)
ks=key_code(k)
ss=sst+ks
return ss
解密的函数
def destr(st,k):
ks=key_code(k)
s=st.replace(ks,”)
try:
ss=code_str(s)
except:
ss=’密文或key错误’
return ss
运行如下
a=enstr(‘加密测试’,’加密’)
print(a)
b=destr(a,’加密’)
print(b)
c=destr(a,’加’)
print(c)
结果
>>>a013b6a6a5868645a5968645e496a545a52376a6a5866545a577547595435545a54a6c6b34536b425a4f6c346d43673d3d0a
>>>加密测试
>>>密文或key错误