用python的哈希函数对密码加密
作者:沃特陌 发布时间:2021-06-10 21:02:58
今天我将教大家如何用哈希函数将密码加密
加密后的密码是很难倒推的~
普通加密:
首先调用函数hashlib
import hashlib
然后使用哈希函数对密码进行加密
这里我使用sha256进行加密
再造一个密码出来
password = 'wotemo666'
接着用哈希函数对它进行加密
注意:这里要使用encode对password进行编码格式声明,不然会报错
hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
print(hash_password)
运行这行代码输出的就是加密后的哈希值啦!!!
图中这行字符串就是 ‘wotemo666’ 对应的哈希值
每个明文对应一个哈希值,但一个哈希值却对应无数个明文
这就导致哈希值是不可逆的,这样,你的密码就更加安全啦~
下面是完整的代码
# 首先调用函数hashlib
import hashlib
# 再造一个密码出来
password = 'wotemo666'
# 用sha256对password进行加密
hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
# 输出对应的哈希值
print(hash_password)
进阶加密:
如果想让你的密码更加的安全,那就要给你的密码加点盐了
这里的加盐就是指在明文密码前或后插入一段随机字符串,然后再进行哈希加密
这样得出来的哈希值就更加的复杂,就更不容易被破解啦
下面我们来实现吧
首先调用random函数随机生成“盐”
import random
这里我们要用到python中的string模块生成a ~ Z和0 ~ 9的所有字符
调用string模块
import string
String模块中的常量:
string.digits:数字0~9
string.ascii_letters:所有字母(大小写)
string.lowercase:所有小写字母
string.printable:可打印字符的字符串
string.punctuation:所有标点
string.uppercase:所有大写字母
这里我们只需用到前两个digits和ascii_letters就可以了
ps:如果想密码更复杂一些可以使用punctuation生成所有标点,然后一同加入到盐中去
这里我们使用while和random函数随机生成可以控制长度的盐
先创建一个激活while的变量和一个储存盐的空白字符串
active = 0
salts = ''
接着用while生成盐
while active < 10:
# 用active激活while
# 这里生成了一个长度为20的盐
# 想要生成多长的盐,就将示例中的10改为期望长度的一半
# 但这里的值最好是整数
salt_one = random.choice(string.digits)
# salt_one生成一个随机的数字
salt_two = random.choice(string.ascii_letters)
# salt_two生成一个随机的字母(区分大小写)
salt = salt_one + salt_two
#salt是它们的加和,这也就是为什么前面要减半
salts += salt
# 然后将加和后的值附加到刚才创建的空白字符串中
active += 1
# while函数基本用法我就不多说了
这样盐就生成出来啦,如图:
接下来,我们将盐附加到明文密码上
after_salt_password = salts + password
# 盐的前后顺序无所谓,password为你的密码
然后,我们再调用hashlib生成哈希值
这里的操作就和前面的一模一样了,唯一不同的是密码加盐了
# 首先调用函数hashlib
import hashlib
# 再造一个密码出来
password = 'wotemo666'
# 然后加盐
after_salt_password = salts + password
# 用sha256对password进行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()
加盐后的哈希值就更为复杂了
下面是完整的代码
# 调用random, string, hashlib函数
import random
import string
import hashlib
# 初始化
active = 0
salts = ''
while active < 10:
# 用active激活while
# 这里生成了一个长度为20的盐
# 想要生成多长的盐,就将示例中的10改为期望长度的一半
# 但这里的值最好是整数
salt_one = random.choice(string.digits)
# salt_one生成一个随机的数字
salt_two = random.choice(string.ascii_letters)
# salt_two生成一个随机的字母(区分大小写)
salt = salt_one + salt_two
#salt是它们的加和,这也就是为什么前面要减半
salts += salt
# 然后将加和后的值附加到刚才创建的空白字符串中
active += 1
# while函数基本用法我就不多说了
password = 'wotemo666'
# 然后加盐
after_salt_password = salts + password
# 用sha256对password进行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()
# hash_password就是输出的哈希值
print(hash_password)
你学会了吗?
来源:https://blog.csdn.net/shr105/article/details/122799672
猜你喜欢
- 话说网站首页是用.NET语言写的,而二级栏目页却是用ASP写的,然后再配上众多全手工的静态专题页,整个网站形成了一个大杂烩。想要在这大杂烩中
- 1 之前我们学习了列表,知道列表可以用来存储一组数据,可以增删改查,可以遍历2 之前我们学习了字典,知道字典可以用来存储键值对,与列表类似,
- Math.min()和Math.max()用法相似。两个方法用来获取给定的一组数值中的最大值或最小值,但是却不接受数组作为参数。当然可以写个
- 最简单的条件语句:if expression: expr_true_suite如上,if是关键字,expression是条件表
- 一、出错情况 有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候DBA就会很紧张了,下面是一些在实践中
- Python版本是2.7.9,在win8上测试成功,就是抓取有点慢,本来想用多线程的,有事就罢了。模板之家的网站上的url参数与页数不匹配,
- clone 一个新项目,发现导包的时候出错 …原因可能是 pycharm 的根目录设置不对。设置根目录的步骤 如下 :来源:https://
- window.location.pathname 比如: /windows/location/page.html 我想得到“windows”
- 本文实例分析了Go语言共享内存读写的方法。分享给大家供大家参考。具体分析如下:前面分析了Go语言指针运算和内嵌C代码的方法,做了一个Go语言
- 在PyCharm2017中同目录下import其他模块,会出现No model named ...的报错,但实际可以运行这是因为PyChar
- MySQL连接查询相信大家都有所了解,连接查询是在数据库查询操作的时候经常用到的,下面就为您介绍MySQL连接查询mysql连接
- while循环是在Python中的循环结构之一。 while循环继续,直到表达式变为假。表达的是一个逻辑表达式,必须返回一个true或fal
- 将视图与缓存系统进行了耦合,从几个方面来说并不理想。 例如,你可能想在某个无缓存的站点中重用该视图函数,或者你可能想将该视图发布给那些不想通
- 其实我这样做的本意是为了防止盗链!大家帮忙看一下通过代码能够根治盗链!只要不是HTTP_REFERER来源于(google.com goog
- python实现解压缩的重要模块就是——zipfile,其次是os安装zipfile模块首先得安装zipfile模块,打开cmd输入一下命令
- def ddns():"""用当前ip更新ddns"""headers = {&
- 1. DBeaver连接mysql 1) 下载DBeaver https://dbeaver.io/download/,
- 1、单个像素(画点)利用pygame画点主要有三种方法:方法一:画长宽为1个像素的正方形import pygame,syspygame.in
- 用到的 Pygame 函数贪吃蛇小游戏用到的函数 功能描述init()初始化 pygamedisplay.set_mode()以元
- 首先我们有这么一种需求,就是我在一个列表中点击了某个item,跳转到详情界面,那么我就需要把item的实体数据从列表页面传递到详情页面,那么