用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
猜你喜欢
- 多线程:在同一个时间做多件事守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.set
- Google Chrome 的发布,使我们更加的注重基于 WebKit 核心的浏览器的表现情况,但我们很多时候“不小心”就会出现问题。考虑下
- 今天我们来介绍下Python基础教程学习之iter() 方法另外的用法。据说很少有人知道这个用法!一、上代码、学用法我们都比较熟悉 iter
- 需求:实现ajax请求,在界面上任意地方点击,可以成功传参。创建项目如下所示:settings.py文件的设置,这次我们除了要注册app和设
- 目录1. 常用的编码2.补充:计算机表示的单位:3.ASCII编码2.GBK和GB2312编码4.Unicode5.UTF-8编码6.编码和
- 游标的使用提到游标这个词,人们想到的是在屏幕上一个闪动的方框,用以指示用户将要输入字符的位置。而在关系型数据库的SQL语言中,游标却有另外的
- 一个最最简单的例子:绘制一个从 0 到 360 度完整的 SIN 函数图形import numpy as npimport matplotl
- 1 捕捉一个异常捕捉一个异常 以用0作为除数会得到ZeroDivisionError异常为例,print(1/0)为例程序的持续执行,不因该
- 本文实例讲述了python实现生成Word、docx文件的方法。分享给大家供大家参考,具体如下:http://python-docx.rea
- 我的机器不知为何,安装MySQL的时候,一到配置那一步就无休止的等待,只好结束任务,然而启动MySQL的时候出现1067错误提示
- 网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下一、首先是主界面# -*- coding: utf-
- 在本篇文章当中主要给大家介绍一个我们在使用类的时候经常使用但是却很少在意的黑科技——描述器,在本篇文
- DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行
- 方法1: X:\oracle\ora81\bin\wrap iname=XXX oname=XXX 方法2:9i在win2000下使用wra
- 本文实例为大家分享了JS实现拖动模糊框特效的具体代码,供大家参考,具体内容如下需求:在图片上拖动按钮,图片蒙层慢慢覆盖,当蒙层边缘碰到左右下
- 一、继承的格式类的继承格式如下,括号中的为父类名。class 类名(父类名): 代码二、单继承下面我们让Man继承自Master类,并调用继
- 框架概念框架和web服务器关系·静态资源:不是经常变化的资源、往往是固定不变的资源·动态资源:经常变化的资源·模板文件:提供了一个显示的模板
- 本文实例讲述了python获取当前计算机cpu数量的方法。分享给大家供大家参考。具体分析如下:这里实际上返回的是计算机的cpu核心数,比如c
- 跨浏览器的本地存储(一):userData behaviorDOM Storage,是基于 Web Applications 1.0 spe
- 本文实现利用python的socketserver这个强大的模块实现套接字的并发,具体内容如下目录结构如下:测试文件请放在server_fi