手机号的 DES-ECB 加密/解密

前言:公司的手机号加密更换了加密方法,这次改成 DES-ECB 加密了

代码操作

# -*- coding:utf-8 -*-

import base64
import json

from Crypto.Cipher import DES


class AesCrypter(object):
    """加密和解密工具类"""
    des_key = b"J2z0Wx7."
    block_size = DES.block_size
    pad_str = ['x01', 'x02', 'x03', 'x04', 'x05', 'x06', 'x07', 'x08']

    @classmethod
    def encrypt(cls, reqdata):
        """ 基于DES和base64的加密算法
            @:param reqdata 需要加密的请求数据
        """
        key = cls.des_key
        length = len(reqdata)
        if length < cls.block_size:
            add = cls.block_size - length
        elif length > cls.block_size:
            add = cls.block_size - (length % cls.block_size)
        else:
            add = 8
        reqdata = reqdata + (cls.pad_str[add - 1] * add)
        reqdata1 = bytes(reqdata, encoding="utf8")
        des = DES.new(key, DES.MODE_ECB)
        encrypt_data = des.encrypt(reqdata1)
        return base64.b64encode(encrypt_data)

    @classmethod
    def decrypt(cls, retdata):
        """DES解密
            @:param retdata: lakala reponse retData
        """
        key = cls.des_key
        debase64_data = base64.b64decode(retdata)
        des = DES.new(key, DES.MODE_ECB)
        decrypt_data = des.decrypt(debase64_data)
        return decrypt_data[:11]

if __name__ == '__main__':
    src='39999925802'
    encrypted  =  AesCrypter.encrypt(src)
    print('加密: ', encrypted)
    decrypt = AesCrypter.decrypt(encrypted)
    print('解密: ', decrypt)

运行后的结果

原文地址:https://www.cnblogs.com/guo2733/p/10543252.html