首页 > 编程语言 >python实现密码与时间戳的加密

python实现密码与时间戳的加密

时间:2023-05-30 09:48:40浏览次数:36  
标签:加密 python lst 密码 pwd str time stamp

1. 概述:

由于工作需要,要对用户的密码进行加密,由于仅是用一种加密方式(例如md5)比较容易被破解,故,我们进行了二次加密,代码如下

2.代码实现

import datetime
import hashlib  # 待加密信息

#加密方法
def encryption(pwd):
    """
    加密
    时间戳(16位)每个数字加6后转为16进制,共16位
    pwd加密为16为
    pwd16位在奇数位置,时间戳加密在偶数位
    :param pwd:
    :return:
    """
    time_stamp_int = int(datetime.datetime.now().timestamp() * 10 ** 6)
    time_stamp_str_lst = list(str(time_stamp_int))
    time_stamp_str_lst = list(map(lambda x: hex(int(x) + 6).__str__().replace('0x', ''), time_stamp_str_lst))
    hl = hashlib.md5()
    hl.update(pwd.encode("utf-8"))
    pwd_hl_lst = list(hl.hexdigest()[8:-8])
    result = ['0'] * 32
    result[0::2] = pwd_hl_lst
    result[1::2] = time_stamp_str_lst
    return ''.join(result)

#解密方法
def decrypt(pwd):
    assert len(pwd) == 32
    pwd_lst = list(pwd)
    time_stamp_str_lst = pwd_lst[1::2]
    time_stamp = int(int(''.join(list(map(lambda x: str(int(x, 16) - 6), time_stamp_str_lst)))) / 10 ** 6)
    pwd_de = ''.join(pwd_lst[0::2])
    return pwd_de, time_stamp

#测试加密与解密
print(datetime.datetime.now().timestamp().__str__())
pwd = encryption("aaa")
pwd_de, time_stamp = decrypt(pwd)

print(pwd_de, time_stamp)

标签:加密,python,lst,密码,pwd,str,time,stamp
From: https://www.cnblogs.com/beijie/p/17442344.html

相关文章

  • 【python】内置函数list
    内置函数listlist()方法用于将元组转换为列表。注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。#!/usr/bin/python#-*-coding:UTF-8-*-aTuple=(123,'runoob','google','abc');aList=list(aTuple)print("列表......
  • 【python】内置函数enumerate
    内置函数enumerateenumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。 语法:enumerate(sequence,[start=0])参数sequence:一个序列、迭代器或其他支持迭代对象。start:下标起始位置的值......
  • Python异步编程之web框架 异步vs同步 文件IO任务压测对比
    测试基本信息主题:比较异步框架和同步框架在文件IO操作的性能差异python版本:python3.8压测工具:locustweb框架:同步:flask异步:aiohttp、starlette异步文件模块:aiofiles、anyio.Path请求并发量:模拟10个用户服务器配置:Intel(R)i7-12700F客户端配置:Intel(R)i7-87003......
  • python内置库--argparse
    1关于argparse从命令行工具运行python时,argparse可以解析命令行工具输入的各种数据,通过argparse提供的函数或者属性,我们可以获得它解析到的数据通过argparse,我们也可以自定义命令行选项,比如pytest-s-v,-s-v就是pytest定义的命令行选项,通过argparse,我们也可以定义自己的命......
  • Groovy 基于Groovy实现MD5加密
    groovy3.0.7代码实现实现方式1importjava.security.MessageDigest;publicclassMD5Utils{ publicfinalstaticStringMD5(Strings){ char[]hexChars=['0','1','2','3','4','5','6',......
  • # yyds干货盘点 # 使用PyInstaller工具将Python程序打包成Mac可执行文件步骤
    大家好,我是皮皮。一、前言前几天在Python钻石群【JethroShen】问了一个Python打包的问题,这里拿出来给大家分享下。二、实现过程这里【eric】问了【ChatGPT】,并给出了代码,如下所示:在Mac系统中,Python程序不能直接打包成.exe可执行文件,因为.exe是Windows系统下的可执行文件格式,而Mac......
  • 使用PyInstaller工具将Python程序打包成Mac可执行文件步骤
    大家好,我是皮皮。一、前言前几天在Python钻石群【JethroShen】问了一个Python打包的问题,这里拿出来给大家分享下。二、实现过程这里【eric】问了【ChatGPT】,并给出了代码,如下所示:在Mac系统中,Python程序不能直接打包成.exe可执行文件,因为.exe是Windows系统下的可执行文件格......
  • python推荐系统实现(矩阵分解来协同过滤)|附代码数据
    原文链接:http://tecdat.cn/?p=10911最近我们被客户要求撰写关于推荐系统的研究报告,包括一些图形和统计输出。用户和产品的潜在特征编写推荐系统矩阵分解工作原理使用潜在表征来找到类似的产品 1.用户和产品的潜在特征我们可以通过为每个用户和每部电影分配属性,然后将它们相......
  • Python程序与设计
    Python学习笔记2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代......
  • Python连接es笔记二之查询方式汇总
    本文首发于公众号:Hunter后端原文链接:Python连接es笔记二之查询方式汇总上一节除了介绍使用Python连接es,还有最简单的query()方法,这一节介绍一下几种其他的查询方式。以下是本篇笔记目录:query()方法介绍Q()查询排序分页source()指定返回字段extra()操作count......