python进行des加密解密,而且可以与JAVA进行互相加密解密

Posted 黄海的编程知识世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python进行des加密解密,而且可以与JAVA进行互相加密解密相关的知识,希望对你有一定的参考价值。

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(‘无法解密!‘)

以上是关于python进行des加密解密,而且可以与JAVA进行互相加密解密的主要内容,如果未能解决你的问题,请参考以下文章

对称密码——DES加密算法

DES加密,如何解决C#、Java互通时补位算法的问题

如何用Java进行3DES加密解密

JAVA和.NET使用DES对称加密的区别

使用C# DES解密java DES加密的字符串

OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果同样