用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哈希函数加密内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 密码学示例——理解哈希(Hash)算法

    Hash 是密码学安全性的基石,它引入了单向函数(one-way function)和指纹(fingerprint)的概念.即: 对于任意输入,都可以产生相同的.唯一的输出值 输出值中不包含输入值的任何线索 一.保密性(confidentiality)与完整性(integrity) 简单来说,信息的保密性确保除授权人员以外的任何人都无法读取该消息,信息的完整性则确保除授权人员以外的任何人都无法修改该消息. 很多时候一段加密的消息无法被他人读取和理解(保密性),并不意味着该密文不会在传播过程中被截

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

    今天我将教大家如何用哈希函数将密码加密加密后的密码是很难倒推的~ 普通加密: 首先调用函数hashlib import hashlib 然后使用哈希函数对密码进行加密这里我使用sha256进行加密 再造一个密码出来 password = 'wotemo666' 接着用哈希函数对它进行加密 注意:这里要使用encode对password进行编码格式声明,不然会报错 hash_password = hashlib.sha256(password.encode("utf-8")).hexdi

  • python base64库给用户名或密码加密的流程

    给明文密码加密的流程: import base64 pwd_after_encrypt = base64.b64encode(b'this is a scret!') pwd_before_encrypt = base64.b64decode(b'dGhpcyBpcyBhIHNjcmV0IQ==').decode('ascii') print(pwd_after_encrypt) print(pwd_before_encrypt) 运行结果: b'dGhpcyBpcyBhIHNjcmV0IQ==

  • 密码哈希函数 Bcrypt的最大密码长度限制详解

    密码哈希函数 Bcrypt的最大密码长度限制 Bcrypt是一个很流行的密码哈希算法,是Niels Provos和DavidMazières基于Blowfish加密算法设计的密码哈希算法,于1999年在USENIX协会上提交.Bcrypt在设计上包含了一个盐Salt来防御彩虹表攻击,还提供了一种自适应功能,可以随着时间的推移,通过增加迭代计数以使其执行更慢,使得即便在增加计算能力的情况下,Bcrypt仍然能保持抵抗暴力攻击. Bcrypt是OpenBSD和SUSE Linux等操作系统默认的密码

  • Python常用内置函数和关键字使用详解

    目录 常用内置方法 查看所有的内置类和内置方法 标准输入输出 数学 序列 进制数转换 ASCII字符编码转换 其它 常用关键字 常见内置属性 常用内置方法 在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作. 查看所有的内置类和内置方法 # 方法一 built_list = dir(__builtins__) # 方法二 import builtins built_list = dir(builtins) 其

  • python密码学RSA密码加密教程

    目录 加密算法模块 哈希值初始化 函数algorithm 加密程序的完整代码 在本章中,我们将重点介绍RSA密码加密的不同实现及其所涉及的功能.您可以引用或包含此python文件以实现RSA密码算法实现. 加密算法模块 加密算法包含的模块如下 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash i

  • Python编程生成随机用户名及密码的方法示例

    本文实例讲述了Python编程生成随机用户名及密码的方法.分享给大家供大家参考,具体如下: 方案一: import random global userName,userPassword #为了便于使用,定义为全局变量 userName = '' userPassword = '' def get_userNameAndPassword(): global userName, userPassword usableName_char = "1234567890abcdefghijklmnopqr

  • Python随机生成带特殊字符的密码

    在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密码,我估计要人要疯了,所以这事不适合人干,但机器最做这个最拿手,今天我们就来学习一段python脚本,可以直接生成自己需要的密码,且密码长度,数字,字符个数随意你指定,废话不多说了,我们直接看代码: #!/usr/bin/env python import string from itertools

  • Python set常用操作函数集锦

    定义 set是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员.但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值. set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

  • 使用python实现哈希表、字典、集合操作

    哈希表 哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构.哈希表由一个直接寻址表和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标. 简单哈希函数: 除法哈希:h(k) = k mod m乘法哈希:h(k) = floor(m(kA mod 1)) 0<A<1 假设有一个长度为7的数组,哈希函数h(k) = k mod 7,元素集合{14, 22, 3, 5}的存储方式如下图: 哈希冲突 由于哈希表的大小是有限的,而要存储的值的总数量是无限的

  • python语言编程实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin************# message1=message.upper() #把明文字母变成大写 message1=list(message1) #将明文字符串转换成列表 list1=[] for i in range(len(message1)): if message1[i]==' ': lis

随机推荐