手機號的 DES-ECB 加密/解密
阿新 • • 發佈:2019-03-16
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 eliflength > 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 加密/解密