33.hashlib摘要算法(数据加密)

摘要算法

摘要算法的作用:

使用摘要算法对用户的密码进行加密,将密码变成一串毫无规律的字符串,只要是两串密码有丝毫不同,生成的字符串就也会不同,对相同的数据转换后结果永远相同。

转换的方法和步骤:

import hashlib
md5=hashlib.md5()  #选择转换的算法
md5.update(b'hello world')   #想要转换的数据必须为bytes
print(md5.hexdigest())   #打印出加密后的密文

执行结果:

5eb63bbbe01eeed093cb22bb8f5acdc3

md5是一种主流的摘要算法,在转换时,不管算法多么不同,摘要的功能始终不变

对于相同的字符串使用同一个算法进行摘要,得到的值总是不变的;使用不同的算法对相同的字符串进行摘要,得到的值应该不同,不同算法的摘要使用方法是相同的

如下使用sha算法进行摘要,sha算法随着算法的复杂读增加,摘要时的时间成本和内存成本都在增加

sha=hashlib.sha1()
sha.update(b'hello world')
print(sha.hexdigest())   

执行结果:

2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

如下是一段md5登录验证密码:

能够将用户输入的密码转换成加密数据存储起来,使存储代码的文件也无法看出数据的具体内容,同时,摘要算法只能将数据加密,却无法将数据逆转换成源格式。

import hashlib
def zhu():
    username=input('输入用户名:')
    pwd=input('输入密码:')
    md5=hashlib.md5(bytes(pwd,encoding='utf-8'))
    md5_pwd=md5.hexdigest()
    be_writed=username+'|'+md5_pwd
    with open('write.txt','w+') as f:
        f.write(be_writed)
def logion():
    username = input('输入用户名:')
    pwd = input('输入密码:')
    md5 = hashlib.md5(bytes(pwd, encoding='utf-8'))
    md5_pwd = md5.hexdigest()
    with open('write.txt')  as f:
        for i in f:
            user,pwd=i.split('|')
            if username==user and md5_pwd==pwd:
                print('登录成功')
zhu()
logion()

加盐:

md5原理上是不可逆转的,不能破解出其源码,随着技术进步,可以使用撞库来破解出一段摘要的原码

为了提高密码的安全性,可以给密码加盐

import hashlib
md5=hashlib.md5(bytes('salt',encoding='utf-8'))   #给密码加盐,,必须为bytes类型
md5.update(b'hello world')   #想要转换的数据必须为bytes
print(md5.hexdigest())

动态加盐

使用用户名的一部分或者使用整个用户名作为盐

import hashlib
md5=hashlib.md5(bytes('salt',encoding='utf-8')+byte(name,encoding='utf-8'))   #给密码加盐,,必须为bytes类型
md5.update(b'hello world')   #想要转换的数据必须为bytes
print(md5.hexdigest())

摘要算法的应用场景:

密码的密文存储,
文件的一致性验证
  在下载的时候,检查我们下载的文件和远程服务器上的文件是否相等
  检查两台机器上的文件是否相等
  文件的一致性校验时,不需要加盐操作

分开摘要和整个摘要:

有时要加密的数据无法同时输入,就无法将整个数据加密。

但是同一个数据,整个摘要和分开摘要的最终结果是相同的,因此对一个文章进行摘要时,可以将文章分成多个部分摘要

import hashlib
md5=hashlib.md5()
md5.update(b'123')
md5.update(b'456')
print(md5.hexdigest()))   #返回的使b'123456'加密后的数据

执行结果:

e10adc3949ba59abbe56e057f20f883e

 

posted @ 2020-10-25 20:41  maday  阅读(95)  评论(0)    收藏  举报