接到任务要测试一下调用一个接口是不是跑的通,他们用Java写的 DesUtil.java 实现DES加密,我不想用 jpype 去调,启一个 JVM 太浪费资源,于是自己用python重写了。也挺简单的,mode 和 padmode 啥的你们自己根据需求换。
iv 偏移向量只支持8位,如果超过8位,可以截断只保留前8位。JAVA版的也是非8位会报错,如果不报错的,其实也是内部做了处理,只保留了前8位。
import base64
from pyDes import des, CBC, PAD_PKCS5
class DesUtil(object):
def __init__(self, mode=CBC, padmode=PAD_PKCS5, key=None, iv=None):
self.padmode = padmode
self.k = des(key, mode, iv, pad=None, padmode=padmode)
def encrypt(self, content):
if not isinstance(content, str):
content = str(content)
en = self.k.encrypt(content.encode("utf-8"), padmode=self.padmode)
return base64.b64encode(en)
def descrypy(self, content):
de = self.k.decrypt(base64.b64decode(content), padmode=self.padmode)
return de.decode("utf-8")
if __name__ == "__main__":
key = "97ed97ed"
des_util = DesUtil(key=key, iv=key)
content = "你好,World!"
str_en = des_util.encrypt(content)
str_de = des_util.descrypy(str_en)
print("加密结果", str_en)
print("解密结果", str_de)
网友评论