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

 更新时间:2022年02月07日 08:36:13   作者:沃特陌  
大家好,本篇文章主要讲的是用python的哈希函数对密码加密,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

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

普通加密:

首先调用函数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)

你学会了吗?

到此这篇关于用python的哈希函数对密码加密的文章就介绍到这了,更多相关python哈希函数加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何通过python检查文件是否被占用

    如何通过python检查文件是否被占用

    这篇文章主要介绍了如何通过python检查文件是否被占用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python中的相关分析correlation analysis的实现

    Python中的相关分析correlation analysis的实现

    这篇文章主要介绍了Python中的相关分析correlation analysis的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python使用CMD模块更优雅的运行脚本

    Python使用CMD模块更优雅的运行脚本

    这篇文章主要介绍了Python使用CMD模块更优雅的运行脚本的方法,实例分析了Python中cmd模块的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • POC漏洞批量验证程序Python脚本编写

    POC漏洞批量验证程序Python脚本编写

    这篇文章主要为大家介绍了POC漏洞批量验证程序Python脚本编写的完整示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 零基础写python爬虫之使用Scrapy框架编写爬虫

    零基础写python爬虫之使用Scrapy框架编写爬虫

    前面的文章我们介绍了Python爬虫框架Scrapy的安装与配置等基本资料,本文我们就来看看如何使用Scrapy框架方便快捷的抓取一个网站的内容,随便选个小站(dmoz.org)来示例吧
    2014-11-11
  • python 在服务器上调用数据库特别慢的解决过程

    python 在服务器上调用数据库特别慢的解决过程

    这篇文章主要介绍了python 在服务器上调用数据库特别慢的解决过程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python3 http.client/server post传输json问题

    python3 http.client/server post传输json问题

    这篇文章主要介绍了python3 http.client/server post传输json问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 使用Python实现3D曲线拟合

    使用Python实现3D曲线拟合

    曲线拟合是数据分析和数学建模领域中广泛使用的技术,它涉及到寻找最接近一组数据点的数学函数的过程,本文我们将讨论如何使用SciPy库在Python中执行3D曲线拟合,感兴趣的小伙伴可以了解下
    2023-11-11
  • python pandas遍历每行并累加进行条件过滤方式

    python pandas遍历每行并累加进行条件过滤方式

    这篇文章主要介绍了python pandas遍历每行并累加进行条件过滤方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Pyqt5如何让QMessageBox按钮显示中文示例代码

    Pyqt5如何让QMessageBox按钮显示中文示例代码

    这篇文章主要给大家介绍了关于Pyqt5如何让QMessageBox按钮显示中文的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Pyqt5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论