1. 程式人生 > >手機號的 DES-ECB 加密/解密

手機號的 DES-ECB 加密/解密

byte base 結果 lse Coding repo obj str port

前言:公司的手機號加密更換了加密方法,這次改成 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)

運行後的結果

技術分享圖片

手機號的 DES-ECB 加密/解密