zoukankan      html  css  js  c++  java
  • 手机号的 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)

    运行后的结果

  • 相关阅读:
    机器学习入门-贝叶斯垃圾邮件过滤(原理)
    机器学习入门-贝叶斯拼写纠错实例
    机器学习入门-贝叶斯算法(原理)
    机器学习入门-集成算法(bagging, boosting, stacking)
    高并发网站技术架构
    Nginx教程
    Shell脚本部分语法
    关于文本处理sort-cut-wc详解
    vim操作命令
    修改Linux基本配置
  • 原文地址:https://www.cnblogs.com/guo2733/p/10543252.html
Copyright © 2011-2022 走看看