python hashlib_python之hashlib模块

python hashlib_python之hashlib模块hashlib模块是python内置的摘要算法。hashlib有两种调用方式:第一种是hashlib.new方法new(name,data=b‘‘,**kwargs)-returnsanewhashobjectimplementingthegivenhashfunction;initializingthehashusingthegivenbinarydat…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

hashlib模块是python内置的摘要算法。

hashlib有两种调用方式:

第一种是hashlib.new方法

new(name, data=b‘‘, **kwargs) – returns a new hash object implementing the given hash function; initializing the hash using the given binary data.

importhashlib

md5obj= hashlib.new(“md5”, b‘alex3714‘)

md5obj.hexdigest()

第二种是直接创建被允许的的算法

Named constructor functions are also available, these are faster than using new(name):

md5(), sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), blake2s(), sha3_224, sha3_256, sha3_384, sha3_512, shake_128, and shake_256.

More algorithms may be available on your platform but the above are guaranteed to exist. See the algorithms_guaranteed and algorithms_available attributes to find out what algorithm names can be passed to new().

importhashlib#将一个字符串进行摘要运算,拿到一个固定的值;,包含了多中加密算法

md5obj = hashlib.md5() #摘要

md5obj.update(b‘alex‘) #要加密的字符串的字节

md5obj.update(b”3714″) #要加密的字符串的字节#多次update是拼接到一起的,再进行hexdigest(),结果和一次update的时一样的#md5obj.update(b‘alex3714)

md5obj.hexdigest() #转成16进制,加密结果是32位

用户名与密码加密:

名词:撞库,根据输入和摘要算法的结果来验证输入与存储的加密算法结果的一致性。

加盐,通过加入随机字符串来防止撞库。

对用户名和密码加密,通常会进行加盐:

1.根据用户名生成随机字符串

2.将该随机字符串与密码拼接在一起,进行摘要算法,得到最后的密码加密结果

importhashlib, random

l1= list(range(48, 58))

l2= list(range(65, 91))

l3= list(range(97, 123))

l1.extend(l2)

l1.extend(l3)

username= “alex”passwd= “alex3714”

#根据用户名生成随机字符串

lis = “”

for i in range(16):

v= random.randint(0, len(l1)-1)

lis+=chr(l1[v])

passwd+=lis

md5= hashlib.new(“md5″, bytes(passwd, encoding=”utf8”))

passwd=md5.hexdigest()

user=dict(

username=username,

user_string=lis,

passwd=passwd,

)print(user)#{‘username‘: ‘alex‘, ‘user_string‘: ‘MnkCViH3avdDYp3U‘, ‘passwd‘: ‘35a5a0e38ea22720a78d594d8f02a021‘}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227276.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 超强汇总!110 道 Python 面试笔试题

    超强汇总!110 道 Python 面试笔试题

    2021年11月5日
    38
  • 渗透测试工具——SET「建议收藏」

    渗透测试工具——SET「建议收藏」社会工程学使用计谋、假情报或人际关系去获得利益和其他敏感信息。 攻击对象一-一人一-秘密信息的保存者,信息安全链中最薄弱的环节。 利用受害者的本能反应、好奇心、信任、贪婪等心理弱点进行欺骗、伤害。常见的社会工程学攻击方式环境渗透:对特定的环境进行渗透,是社会工程学为了获得所需的情报或敏感信息经常采用的手段之一。社会工程学攻击者通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料,比如一个人的姓名、生日、ID电话号码、管理员的IP地址、邮箱等,通过这些收集信息来判断目标的网

    2022年8月12日
    7
  • Ubuntu修改用户名和密码后无法登录_ubuntu默认用户名

    Ubuntu修改用户名和密码后无法登录_ubuntu默认用户名ubuntu修改用户名和密码项目场景:克隆别人的虚拟机后,想修改用户名和密码。问题描述:修改密码后,root和用户身份验证正常,但是继续修改用户名后,提示认证失败。原因分析:原因是修改用户名后,用户名和密码不匹配解决方案:若要修改用户名和密码,需要切换到root后修改。修改完成后需要确认用户身份验证是否通过,通过后才证明完成了修改,否则重启后会导致无法登陆。下面是修改用户名和密码的步骤。1.修改密码最好先修改密码,重启后再修改用户名。1)修改root密码:$sudopasswdr

    2022年9月29日
    4
  • 字符串非空判断:StringUtils中 isNotEmpty 和isNotBlank的区别

    字符串非空判断:StringUtils中 isNotEmpty 和isNotBlank的区别在项目中,我们用的最多的是StringUtils中的非空判断方法,相信大部分人都用过IsNotEmpty或者isEmpty方法今天我们要提到的,是isNotBlankpublicstaticbooleanisNotEmpty(Stringstr)判断某字符串是否非空,等于!isEmpty(Stringstr),这里不能排除空格字符下面是示例:Stri

    2022年8月12日
    11
  • 多线程死锁的产生以及如何避免死锁

    多线程死锁的产生以及如何避免死锁一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如果有两辆汽车分别从桥的左右两端驶上该桥,则会出现

    2022年7月13日
    20
  • SQL语法(五) 多表联合查询

    SQL语法(五) 多表联合查询前言当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99)范例1.笛卡儿积将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有表的数量的乘积。–SQL92方式–表名以逗号隔开实现多表查询–SQL99方式–使用crossjoin关键字2.等值连接筛选&不等…

    2022年6月12日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号