Python 如何生成hash值(md5、sha)

2019-08-07 09:17:52   Python

hash

HASH

HASH——‘哈希’,输入任意长度的值,生成固定长度的散列值。

MD5

MD5信息摘要算法

功能:

  • 输入任意长度,经过算法,输出128位固定长度的值(数字指纹)。
  • 不同的输入,得到不同的结果(唯一性)

特点:

  • 压缩性:输入任意,MD5值长度固定
  • 容易计算:原始数据很容易就能算出MD5的值。
  • 抗修改:修改了一点点,所算出MD5值差别很大。
  • 强碰撞:已知一个MD5值,想通过另一个值算出相同的值很难。

是否可逆?

MD5是基于hash算法,在计算过程中原文数据就丢失了,所以不可逆。

有什么用途?

  • 防止被篡改
  • 防止看到明文
  • 数字签名

例子

import hashlib

# 1.将字符串,通过加密算法,变成固定长度的输出
s = 'abc'
print(len(str(hash(s)))*4, hash(s))

# 2.生成md5数字指纹。
# 第1种写法:
s2 = b'!@abc'  # 定义字节型字符串
md = hashlib.md5()  # 导入md5算法
md.update(s2)  # 把值传给md5算法

print(md.digest())  # 生成一个128位的2进制数
print('MD5', '长度:', len(md.hexdigest())*4, md.hexdigest())
# 第2种写法:
print(hashlib.md5("!@abc".encode("utf-8")).hexdigest())

# 3.SHA-1

hash = hashlib.sha1()
hash.update('admin'.encode('utf-8'))
print('SHA-1', '长度:', len(hash.hexdigest())*4, hash.hexdigest())

# 4.SHA-256

hash = hashlib.sha256()
hash.update('admin'.encode('utf-8'))
print('SHA-256', '长度:', len(hash.hexdigest())*4, hash.hexdigest())

# 5.SHA-384

hash = hashlib.sha384()
hash.update('admin'.encode('utf-8'))
print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest())

# 5.SHA-512

hash = hashlib.sha512()
hash.update('admin'.encode('utf-8'))
print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest())
vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/179
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册

亲情非友情链接