import binascii
from pyDes import des, CBC, PAD_PKCS5
import uuid
import time
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyDes
secret_key = ‘19771011‘
# http://blog.csdn.net/lihao21/article/details/78557461?locationNum=11&fps=1
def des_encrypt(s):
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en)
def des_descrypt(s):
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de
def get_mac_address():
mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
return ":".join([mac[e:e + 2] for e in range(0, 11, 2)]).upper()
# 获取时间戳
def get_time_stamp():
ct = time.time()
local_time = time.localtime(ct)
data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
data_secs = (ct - int(ct)) * 1000
time_stamp = "%s.%03d" % (data_head, data_secs)
return time_stamp
def trydecode(token):
try:
str_de = des_descrypt(token)
return True, str(str_de, encoding="utf-8")
except:
return False, ‘无法解密‘
# 任务编号
guid = uuid.uuid3(uuid.NAMESPACE_DNS, ‘dsideal‘)
# 时间戳
timespan = get_time_stamp().replace(‘-‘, ‘‘).replace(‘:‘, ‘‘).replace(‘ ‘, ‘‘).replace(‘.‘, ‘‘)
str_en = des_encrypt(str(guid).upper() + ‘ ‘ + get_mac_address() + ‘ ‘ + timespan + ‘ ‘)
encodestr = str(str_en, encoding="utf-8")
print(‘Token:‘ + encodestr)
# 尝试解密
b, m = trydecode(encodestr)
if b:
print(m)
else:
print(‘无法解密!‘)