在应用程序的接口里,常用到签名:其中签名里用到MD5加密,这里用hashlib实现

hashlib

概念:Hash,译做“散列”,也有直接音译为“哈希”的。把任意长度的输入,通过某种hash算法,变换成固定长度的输出,

该输出就是散列值,也称摘要值。该算法就是哈希函数,也称摘要函数。

hashlib模块支持md5(),sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(),blake2s(),

sha3_224(), sha3_256(), sha3_384(), sha3_512(), shake_128(), shake_256()等多种hash构造方法。

这些构造方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。

例如sha1()能创建一个SHA-1对象,sha256()能创建一个SHA-256对象。

然后就可以使用通用的update()方法将bytes类型的数据添加到对象里,

最后通过digest()或者hexdigest()方法获得当前的摘要。

import hashlib
import time def mymd5(pw):
md = hashlib.md5() # 生成md5对像
md.update(pw.encode('utf-8')) # 加密,加密密码的时候,必须对密码进行编码,否则会报错
print("old—value:",pw) #用十六进制输出加密后的数据
print ("md5-value:",md.hexdigest()) t = time.time()
code="iuehf3"+"jknshfemckfhskdf"+str(int(round(t * 1000)))+"baidu"
mymd5(code)

MD5双重加密:

md5_obj=hashlib.md5("123456".encode("utf-8"))
str1=md5_obj.hexdigest() #加密1次
obj2=hashlib.md5(str1.encode("utf-8"))
str2=obj2.hexdigest()#加密2次
print(str2) #双重加密后,同样解密开

MD5加盐值(SALT)

各大网站的暴力破解,都需要再一次提高MD5的安全性。所谓加盐就是加一些辅助的调料,这里称为Salt值。
举个栗子,比如用户注册的密码,肯定不能明文存数据库,当然现在肯定不会再出现CSDN这种事情了,那密码加密之前是单纯的使用MD5,

现在要给MD5加点调料,那问题是最终MD5不可逆,用户注册后第二次怎么登陆?

数据库在存储的时候需要在表里面多加一个Salt字段,用来存储你加的调料是什么,等用户登录的时候,拿用户注册的密码+Salt字段,然后再进行MD5,然后再用加密后的内容和数据库存储的MD5密码进行匹配,成功的话则提示成功,匹配失败的话就登录失败。

from random import Random
import hashlib # 获取由4位随机大小写字母、数字组成的salt值
def create_salt(length = 4):
salt = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
len_chars = len(chars) - 1
random = Random()
for i in range(length):
# 每次从chars中随机取一位
salt += chars[random.randint(0, len_chars)]
return salt # 获取原始密码+salt的md5值
def create_md5(pwd,salt):
md5_obj = hashlib.md5()
md5_obj.update((pwd + salt).encode("utf-8"))
return md5_obj.hexdigest() # 原始密码
pwd = '123456'
# 随机生成4位salt
salt = create_salt()
# 加密后的密码
md5 = create_md5(pwd, salt) print('[pwd]\n',pwd )
print('[salt]\n', salt)
print('[md5]\n', md5)

python获取毫秒级别时间戳

1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳
import time
import datetime
t = time.time()
print (t) #原始时间数据
print (int(t)) #秒级时间戳
print (int(round(t * 1000))) #毫秒级时间戳
print (int(round(t * 1000000))) #微秒级时间戳
												

python里面的MD5加密 ---# hashlib包的使用的更多相关文章

  1. python文件的md5加密方法

    本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...

  2. 小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)

    小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理) 异常处理(处理) 1.产生异常.raise 异常类(),抛出异常2. 处理异常: try: xxxxx # 尝试执行的代码. ...

  3. 练习MD5加密jar包编写

    简介 参数签名可以保证开发的者的信息被冒用后,信息不会被泄露和受损.原因在于接入者和提供者都会对每一次的接口访问进行签名和验证. 签名sign的方式是目前比较常用的方式. 第1步:接入者把需求访问的接 ...

  4. python 反射、md5加密

    一.issubclass,type,isinstance 1.issubclass :判断xx类是否是yyy类型(包括子类),用于类之间的判定 class GrandF: pass class Fat ...

  5. python约束 与MD5加密写法

    python 中约束写法有两种 1 常用的通过继承关系主动抛出异常  2 通过抽象类+抽象方法 1 常用的通过继承关系主动抛出异常写法 在本send方法中报错不会抛出异常, class BaseMes ...

  6. Python爬虫使用MD5加密的坑

    由于公司的业务需要,需要爬取很多的国外网站图片,然后兄弟我一路正则杀过去,总共匹配到658张链接,心里美滋滋开始写下载的代码.然后就有了这次坑的记录. 首先这是我查到的链接数量 然后爬虫跑完后,美滋滋 ...

  7. Python实现批量MD5加密

    #!/usr/bin/python # -*- coding: utf-8 -*- import hashlib def md5(str): hl = hashlib.md5() hl.update( ...

  8. python中的md5加密

    import md5 import types def get_md5(data): if type(data) is not types.StringType: # 检验输入的数据是否为字符串 pr ...

  9. python里面的xlrd模块

    ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 今天就先来说一下xlrd模块: 一.安装xlrd模块 ♦ 到python官网下载 ...

随机推荐

  1. Qt Creater快速定义函数的快捷键

    1.简介 在Qt creator中编写函数的时候,在头文件编写了函数,需要在相应的cpp文件中编写对应的函数定义实现,如果每次都需要手动的敲击全部的代码,这会非常的耗时耗力,显得很方便,这时候就需要巧 ...

  2. .h5图像文件(数据集)的读取并存储 工具贴(二)

    概述 H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件.由美国超级计算中心与应用中心研发的文件格式,用以存储 ...

  3. 【模板】 RMQ求区间最值

    RMQ RMQ简单来说就是求区间的最大值(最小值) 核心算法:动态规划 RMQ(以下以求最大值为例) F[i,j]表示 从 i 开始 到i+2j -1这个区间中的最大值 状态转移方程 F[i,j]=m ...

  4. 使用 flux2+kustomize+helm+github 进行多集群 GitOps 云原生渐进式交付

    对于此示例,我们假设有两个集群的场景:暂存(staging)和生产(production). 最终目标是利用 Flux 和 Kustomize 来管理两个集群,同时最大限度地减少重复声明. 我们将配置 ...

  5. VBS脚本编程(10)——编写WMI脚本

    WMI介绍 1.WMI是什么? WMI--Windows管理规范(Windows Management instrumentation). 是一项核心的Windows管理技术. 采用统一的.基于开放标 ...

  6. 使用Spring Data JPA 访问 Mysql 数据库-配置项

    jpa操作数据库 注意:数据库采用的是本机数据库,下面是建表语句及初始化数据: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------- ...

  7. Func委托与表达式树Expression

    最近在写ORM框架,其中遇到一个难点,就是作为框架调用方如何将查询条件传入框架内.其中就用到了Expression. Func委托 要Expression先要了解Func委托,Func委托的样式是: ...

  8. Machine Schedule 赤裸裸的二分匹配 二部图中的点覆盖书==匹配数

    Machine Schedule 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 ...

  9. gitlab 设置tag保护及取消tag保护功能

    用gitlab管理员登录系统 进入项目->设置->Repository 设置项目的Tag保护 效果展示 取消Tag保护 效果展示

  10. 增强采样软件PLUMED的安装与使用

    技术背景 增强采样(Enhanced Sampling)是一种在分子动力学模拟中常用的技术,其作用是帮助我们更加快速的在时间轴上找到尽可能多的体系结构及其对应的能量.比如一个氢气的燃烧反应,在中间过程 ...