python中的hashlib模块的使用

hashlib模块算法

#哈希算法也叫摘要算法,相同的数据始终获得相同的输出,不一样的数据获得不一样的输出。
#(1)哈希将不可变的任意长度的数据,变成具备固定长度的惟一值
#(2)字典的键值对映射关系是经过哈希计算的,哈希存储的数据是散列(无序)数据库

# 应用场景:在须要效验功能时使用
用户密码的 => 加密,解密
相关效验的 => 加密,解密编程

 

hashlib中的MD5算法安全

 

# 第一步是引包
import hashlib


# 建立一个md5算法的对象
hs = hashlib.md5()
# print(hs)
# update中的 参数必须是二进制字节流 
hs.update("123".encode())
## hexdigest 返回32位十六进制的字符串(固定长度)
## 用一个hsvar来接收通过哈希算法返回的值
hsvar = hs.hexdigest()

 

#加盐 (就是在简单的算法中进行加入混肴参数)函数

语法格式以下:学习

#首先在实例化hashlib中的MD5对象的时候,加入混淆参数key,以此达到更加复杂的加密)

#加入的key参数必定也要是字节流
hs2 = hashlib.md5("abcd".encode())

hs2.update("123123".encode())

hs2var = hs2.hexdigest()

加盐后的好处就是,增长了加密的安全性,使其不那么容易被破解网站

但由于hash算法是被公开的算法,其安全性不那么好,一些简单的加密 值很容易被逆向破解出来,说逆向破解也不那么准确,加密

通常来讲,破解此类算法只能使用穷举法, 能够将 跑出来的值存入到一个大的数据库中,哈希算法得出的值有惟一性,因此能够反向查询已有的hash值来获得原始数据,固然这种网站也有, 我百度上看到的一个网站,大家能够进去看一看,通常的哈希值都能查询到原数据,只要他们数据库中有的话.spa

因此说最好的方法就是咱们要加盐,去加入复杂混肴参数,这样的话大大提升了数据加密的安全性设计

连接:https://www.cmd5.com/ md5解密(本连接只做为学习使用,勿将其使用到任何非法用途)

 

在开发编程中,经常使用到hash算法的方面应该有用户的注册登陆

下面有我写的一个实例,供你们参考(为了方便你们的阅读,这个注册登陆功能我没有完善,好比说用正则去卡用户名和密码的格式等等,)

import hashlib

#定义一个加密函数,将传入的参数转换成32位的哈希值并返回
def md5(pwd):
    md5_password = hashlib.md5("abd".encode())
    md5_password.update(pwd.encode())
    return md5_password.hexdigest()

#定义一个登陆函数,将传入的帐号密码与本地密码文件进行匹配,若是匹配到返回True
def login(user,pwd):
    with open("database","r",encoding="utf-8") as fp:
        for line in fp :
            u,p = line.strip().split("|")
            if u == user and p == md5(pwd):
                return True

#定义一个注册的函数,将用户传入的帐号密码写入到本地的密码文件中
def register(user,pwd):
    with open("database","w",encoding="utf-8") as fp:
        temp  = user+ "|" + md5(pwd)
        fp.write(temp)

#index菜单,给用户的交互
choice = input("1表示登陆, 2表示注册:").strip()
if choice == "2":
    user = input("用户名:")
    pwd = input("密码:")
    register(user,pwd)
elif choice == "1":
    user = input("用户名:")
    pwd = input("密码:")
    r = login(user,pwd)
    if r == True:
        print("登陆成功")
    else:
        print("登陆失败")
else:
    print("帐号不存在")

 

 hashlib中的sha算法

  • # sha 加密效率低,算法精密,安全性高
  • sha: Secure Hash Algorithm(安全哈希算法)

   sha是美国国家标准与技术研究院与美国国家安全局设计,从94年以来被普遍使用的加密算法.sha系列中的sha1, sha224, sha2556适用于长度不超过2^64二进制位的消息。sha384和sha512适用于长度不超过2^128二进制位的消息。不过,这个也不太安全.2005年的时候国内王小云教授及其团队在sha1算法的破译上就已经取得了很大的成就.今年谷歌已经攻破了sha1算法.另外,Matthew Green(https://twitter.com/matthew_d_green)在这一领域也有不错的成就.

import hashlib

#实例化sha1对象
hs3 = hashlib.sha1()

#去将要去加密的数据经过一个方法放入对象中
hs3.update('123123'.encode())

#调用对象中的方法,计算并输出加密后的40位的哈希值
hsvar = hs3.hexdigest()

sha算法经常使用的有 sha1 sha512等,语法同样,只不过输出的哈希值的长度不同,因此就不一一列举了

相关文章
相关标签/搜索