Skip to main content

Command Palette

Search for a command to run...

Python Python中的加密工具

Published
2 min read
Python Python中的加密工具

Python中的加密工具

hashlib模块介绍

  • 难破解
  • 不可逆

hashlib模块中的常用方法

函数名参数介绍举例返回值
md5byteMd5算法加密hashlib.md5(b'hello')Hash对象
sha1byteSha1算法加密hashlib.sha1(b'hello')Hash对象
sha256byteSha256算法加密hashlib.sha256(b'hello')Hash对象
sha512byteSha512算法加密hashlib.sha512(b'hello')Hash对象

代码

# coding:utf-8

import hashlib
import time

base_sigh = 'muke'


def custom():
    a_timestamp = int(time.time())
    _token = '%s%s' % (base_sigh, a_timestamp)
    # print(_token, type(_token))
    hashobj = hashlib.sha1(_token.encode('utf-8'))
    a_token = hashobj.hexdigest()
    # print(a_token)
    return a_token, a_timestamp


def b_service_check(token, timestamp):
    _token = '%s%s' % (base_sigh, timestamp)
    b_token = hashlib.sha1(_token.encode('utf-8')).hexdigest()
    if token == b_token:
        return True
    else:
        return False


if __name__ == '__main__':
    need_help_token, timestamp = custom()  # 若只使用一个变量,则此处会生成一个元组传入其变量
    time.sleep(1)
    result = b_service_check(need_help_token, int(time.time()))
    if result == True:
        print('a合法,b服务可以进行帮助')
    else:
        print('a不合法,b不可进行帮助')

base64模块介绍

  • 通用型
  • 可解密

base64模块的常用方法

函数名参数介绍举例返回值
encodestringByte进行base64加密base64.encodestring(b'py')Byte
decodingstringByte对base64解密base64.decodestring(b'eGlhb211\n')Byte
encodebytes(推荐)Byte进行bese64加密base64.encodebytes(b'py')Byte
decodingbytes(推荐)Byte对base64解密base64.decodebytes(b'eGlhb211\n')Byte

代码

# coding:utf-8

import base64

replace_one = '%'
replace_two = '$'


def encode(data):
    if isinstance(data, str):
        data = data.encode('utf-8')
    elif isinstance(data, bytes):
        data = data
    else:
        raise TypeError('data need bytes or str')

    _data = base64.encodebytes(data).decode('utf-8')
    # print(_data)
    _data = _data.replace('a', replace_one).replace('2', replace_two)
    # print(_data)
    return _data


def decode(data):
    if not isinstance(data, bytes):
        raise TypeError('data need bytes')
    replace_one_b = replace_one.encode('utf-8')
    replace_two_b = replace_two.encode('utf-8')
    data = data.replace(replace_one_b, b'a').replace(replace_two_b, b'2')
    return base64.decodebytes(data).decode('utf-8')


if __name__ == '__main__':
    result = encode('hello xiaomu')
    print(result)
    new_result = decode(result.encode('utf-8'))
    print(new_result)
4 views

More from this blog

MySQL | 表的内连接

数据操作语言:表连接查询(一) 从多张表中提取数据 从多张表提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生 笛卡尔积。 规定了连接条件的表连接语句,就不会出现笛卡尔积。 # 查询每名员工的部门信息 SELECT e.empno,e.ename,d.dname FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; 表连接的分类 表连接分为两种:内连接 和 外连接 内连接是结果集中只保留符合...

May 16, 20221 min read13
MySQL | 表的内连接

MySQL | 分组查询的应用

数据操作语言:分组查询 为什么要分组? 默认情况下汇总函数是对全表范围内的数据做统计 GROUP BY 子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理 SELECT deptno,AVG(sal) FROM t_emp GROUP BY deptno; SELECT deptno,ROUND(AVG(sal)) FROM t_emp GROUP BY deptno; -- ROUND 取整 逐级分组 数据库支持多列分组条件,执行的时候...

Apr 27, 20221 min read10
MySQL | 分组查询的应用

MySQL | 聚合函数的使用

数据操作语言:聚合函数 什么是聚合函数 聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对 数据求和、求 最大值 和 最小值 、求 平均值 等等。 求公司员工的评价月收入是多少? SELECT AVG(sal+IFNULL(comm,0)) FROM t_emp; SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; SUM 函数 SUM 函数用于求和,只能用户数字类型,字符类型的统计结果为 0 ,日期类型统计结果是毫秒数相加 SE...

Apr 26, 20221 min read8
MySQL | 聚合函数的使用
U

Untitled Publication

173 posts