Java Des加密的Python版本

2019-12-06  本文已影响0人  Curious1990

接到任务要测试一下调用一个接口是不是跑的通,他们用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)
上一篇下一篇

猜你喜欢

热点阅读