用python的哈希函数对密码加密

作者:沃特陌 时间:2021-06-10 21:02:58 

今天我将教大家如何用哈希函数将密码加密
加密后的密码是很难倒推的~

普通加密:

首先调用函数hashlib

import hashlib

然后使用哈希函数对密码进行加密
这里我使用sha256进行加密

再造一个密码出来

password = 'wotemo666'

接着用哈希函数对它进行加密

注意:这里要使用encode对password进行编码格式声明,不然会报错

用python的哈希函数对密码加密

hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
print(hash_password)

运行这行代码输出的就是加密后的哈希值啦!!!

用python的哈希函数对密码加密

图中这行字符串就是 ‘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函数基本用法我就不多说了

这样盐就生成出来啦,如图:

用python的哈希函数对密码加密

接下来,我们将盐附加到明文密码上

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()

加盐后的哈希值就更为复杂了

用python的哈希函数对密码加密

下面是完整的代码

# 调用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

标签:python,哈希,函数,加密
0
投稿

猜你喜欢

  • MySQL的常见存储引擎介绍与参数设置调优

    2024-01-16 15:08:07
  • Django2.1.7 查询数据返回json格式的实现

    2023-09-28 09:54:20
  • Python利用requests模块下载图片实例代码

    2023-11-18 16:10:13
  • python写xml文件的操作实例

    2023-08-09 00:40:39
  • golang获取网卡信息操作

    2024-02-22 01:57:17
  • python图片处理库Pillow实现简单PS功能

    2021-08-29 13:51:23
  • 用Asp+XmlHttp实现RssReader功能

    2008-07-09 12:20:00
  • Python学习之虚拟环境原理详解

    2023-02-12 16:45:52
  • 用python实现的线程池实例代码

    2023-11-06 23:04:54
  • 解决python中文乱码问题方法总结

    2022-01-30 18:47:56
  • Python抓取通过Ajax加载数据的示例

    2023-12-09 21:28:38
  • 一文读懂JS中的var/let/const和暂时性死区

    2024-04-19 10:06:05
  • 在Python 的线程中运行协程的方法

    2021-03-10 18:06:38
  • 网页版面布局的处理问题

    2008-06-05 12:32:00
  • Microsoft Access 数据库常规规格

    2007-09-27 19:28:00
  • MySQL 处理重复数据的方法(防止、删除)

    2024-01-13 20:46:35
  • Python办公自动化之Excel(中)

    2023-03-07 05:48:15
  • python操作redis方法总结

    2021-12-07 05:51:22
  • js特效,页面下雪的小例子

    2024-04-22 22:32:21
  • Pytorch十九种损失函数的使用详解

    2021-07-19 22:23:07
  • asp之家 网络编程 m.aspxhome.com