哈希算法(hash)加密解密

这篇具有很好参考价值的文章主要介绍了哈希算法(hash)加密解密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、哈希算法(hash)加密解密介绍

哈希,英文叫做 hash。
哈希函数(hash function)可以把 任意长度的数据(字节串)计算出一个为固定长度的结果数据。
我们习惯把 要计算 的数据称之为 源数据, 计算后的结果数据称之为 哈希值(hash value)或者 摘要(digests)。
有好几种哈希函数,对应不同的算法, 常见有的 MD5, SHA1, SHA224, SHA256, SHA384, SHA512

哈希计算的特点是:
相同的 源数据, 采用 相同的哈希算法, 计算出来的哈希值 一定相同
不管 源数据 有多大,相同的哈希算法,计算出来的哈希值长度 都是一样长的。

算法	计算结果长度
MD5	16字节
SHA1	20字节
SHA224	28字节
SHA256	32字节
SHA384	48字节
SHA512	64字节

算法不可逆。

也就是说,不能通过 哈希值 反过来计算出 源数据。 所以哈希和我们常说的加密解密不同。

不同的源数据 使用同样的哈希算法,可能会产生相同的 哈希值,这被称之为碰撞率(collision rate)

各种哈希算法,计算的结果长度越长,碰撞率越低,通常耗费的计算时长也越长。

即使是 MD5 算法, 碰撞率也 非常小,小到几乎可以忽略不计。大约是 1.47*10的负29次方

二、加密方式

'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
                      'blake2b', 'blake2s',
                      'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
                      'shake_128', 'shake_256'

hash加密,哈希算法,算法,散列表,数据结构

hash加密,哈希算法,算法,散列表,数据结构

md5加密

# coding=utf-8
"""
    @Project :pachong-master 
    @File    :hash_test.py
    @Author  :gaojs
    @Date    :2022/7/11 21:15
    @Blogs   : https://www.gaojs.com.cn
"""
import hashlib


# 使用md5 算法
h = hashlib.md5()

# sha 256算法
# m = hashlib.sha256()

# 要计算的元数据必须是字符串格式
# 字符串对象需要encode转换为字节串对象
h.update("Hi, 我命由我不由天".encode())

# 产生哈希值对应的bytes对象
resultBytes = h.digest()
resultHex = h.hexdigest()
print(resultHex)

sha 256加密

# coding=utf-8
"""
    @Project :pachong-master 
    @File    :hash_test.py
    @Author  :gaojs
    @Date    :2022/7/11 21:15
    @Blogs   : https://www.gaojs.com.cn
"""
import hashlib


# 使用md5 算法
# h = hashlib.md5()
# md5 加密介入如下:8b365af9b1089f502e7bc60ac9c81ed2
# sha 256算法
h = hashlib.sha256()
# 要计算的元数据必须是字符串格式
# 字符串对象需要encode转换为字节串对象
h.update("Hi, 我命由我不由天".encode())

# 产生哈希值对应的bytes对象
resultBytes = h.digest()
resultHex = h.hexdigest()
# sha 256加密结果如下:8a3e8bf351d6bc5c311a6790f7aeeea46d955db7a4357653b21254380651623f
print(resultHex)

sha 512加密

# coding=utf-8
"""
    @Project :pachong-master 
    @File    :hash_test.py
    @Author  :gaojs
    @Date    :2022/7/11 21:15
    @Blogs   : https://www.gaojs.com.cn
"""
import hashlib


# 使用md5 算法
# h = hashlib.md5()
# md5 加密介入如下:8b365af9b1089f502e7bc60ac9c81ed2
# sha 512算法
h = hashlib.sha512()
# 要计算的元数据必须是字符串格式
# 字符串对象需要encode转换为字节串对象
h.update("Hi, 我命由我不由天".encode())

# 产生哈希值对应的bytes对象
resultBytes = h.digest()
resultHex = h.hexdigest()
# sha 512加密结果如下:
# c945f94c933078a77812afa75cd693ee17e581b9920696063cf50983fcb1a56d577565c3bcda05badc6c4ffdf64f1abbdd6dd0897c3e1620950b7ec31c96fe6c
print(resultHex)

套路一样

三、python如何解密hash算法

加解密算法,是对源数据 进行运算产生加密数据,以及反向过程,对加密数据反算出 源数据。

加解密算法 和 hash算法 不同点有:

加解密算法 是可逆的,hash算法是不可逆的。

hash算法可以对很大的数据产生比较小的哈希值,而加密算法源数据很大,加密后的数据也会很大

加解密算法 可以分为 对称加密 以及 不对称加密

对称加密 指 加密和解密 使用相同的 密钥 。

而 不对称加密 指 加密和解密 使用不同的 密钥,通常是一对密钥,称之为公钥(用来加密)和私钥(用来解密)。

比较常见的 对称加密算法有: AES, RC4, DES, 3DES, IDEA 等。

其中安全等级较高的是 AES。

而最知名的 不对称加密系统 就是 RSA (Rivest–Shamir–Adleman) 。

hash_jiemi.py

# coding=utf-8
"""
    @Project :pachong-master 
    @File    :hash_jiemi.py
    @Author  :gaojs
    @Date    :2022/7/11 21:34
    @Blogs   : https://www.gaojs.com.cn
"""
# 目前口碑比较好的Python加解密库有 cryptography 和 PyNaCl
from cryptography.fernet import Fernet


def jiami():
    """
    加密解密过程
    :return: 
    """
    # 下面是一个使用 该库进行 AES 加解密运算的例子
    # 产生秘钥
    key = Fernet.generate_key()
    fin = Fernet(key)

    strings = 'gaojs, 我命由我不由天!'
    # 原信息必须是字符串
    stringsBytes = strings.encode()
    # 生成加密字节
    token_result = fin.encrypt(stringsBytes)
    print(token_result)
    # 解密,返回值是字节串对象
    result = fin.decrypt(token_result)
    print(result.decode())


if __name__ == '__main__':
    jiami()

hash加密,哈希算法,算法,散列表,数据结构文章来源地址https://www.toymoban.com/news/detail-541495.html

到了这里,关于哈希算法(hash)加密解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AES与DES加密解密算法

    AES(Advanced Encryption Standard,高级加密标准)的出现,是因为以前使用的DES算法密钥长度较短,已经不适应当今数据加密安 全性的要求,因此2000年10月2日,美国政府宣布将比利时密码学家Joan Daemen和Vincent Rijmen提出的密码算法RIJNDAEL作为高级加密标准。2001年11月26日,美国政府

    2024年04月28日
    浏览(35)
  • .net中加解密用BouncyCastle就够了,支持常用的各种加密解密算法

    BouncyCastle 是一个流行的 Java 加解密库,也支持在 .NET 平台上使用。下面是 BouncyCastle 在 .NET 下使用的一些常见功能,包括 AES、RSA、MD5、SHA1、DES、SHA256、SHA384、SHA512 等。 在开始之前,请确保你已经将 BouncyCastle 的 NuGet 包安装到你的项目中。你可以通过 NuGet 包管理器控制台或

    2024年02月05日
    浏览(37)
  • C/C++ 常用加密与解密算法

    计算机安全和数据隐私是现代应用程序设计中至关重要的方面。为了确保数据的机密性和完整性,常常需要使用加密和解密算法。C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现。本文将介绍一些在C++中常用的加密与解密算法,这其中包括Xor异或、BASE64、

    2024年02月05日
    浏览(26)
  • Java代码实现RSA算法加密解密文件功能

    底层算法不做赘述,想要了解自行百度。 RSA属于非对称加密,非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。根据应用的不同,我们可以选择使用不同的密钥加密: 签名:使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份

    2024年02月12日
    浏览(38)
  • DES加密解密 Feistel算法网络结构 详讲

    DES算法是属于对称密码算法中的分组加算法。 分组加密 和 流密码 加密是相对应的。 流密码 是逐字节进行加密,即一个字节一个字节进行加密 分组加密 算法也叫 块加密 ,将明文分成固定字节块,对每个字节块分别进行加密,最后拼接在一起得到密文 密钥长64位,56位参与运

    2024年02月16日
    浏览(27)
  • C# .Net学习笔记—— 加密和解密算法

    1、MD5不可逆加密 2、Des对称可逆加密 3、RSA非对称可逆加密 4、数字证书SSL 调用 得出结果 * 通过上面结果可以得出规律 MD5可以得到一串定长的随机编码 传入的字符串或者文件相同,得到的编码是相同的 只要稍微有一点不同得到的MD5都是不同的 1、账号登陆,数据库内防止看

    2024年01月22日
    浏览(34)
  • base4解密(Base64加密算法)

    base64解密解码转换说明: 1、Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。 2、为了保

    2024年02月16日
    浏览(95)
  • 算法加密与解密、字符编码与字符集

    加密保证数据不会被窃取或者修改 哈希算法 压缩映射 :散列又称为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。 哈希算法(Hash)又称摘要算法(Digest),哈希算法的目的就是为了验证原始数据是否被篡改。 主流的散列算法有MD5和

    2024年02月03日
    浏览(39)
  • 基于JAVA的RC4加密解密算法循环实现

           RC4算法是一种对称加密算法,所谓对称加密,就是加密和解密的过程是一样的,加密和解密均采用同一把密钥。RC4算法的特点是算法简单,执行速度快安全性比较高并且密钥长度是可变的,可变范围为1-256字节(8-2048比特)。让它如此广泛分布和使用的主要因素是它不可

    2024年02月04日
    浏览(40)
  • RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA、MD5两种加密解密算法,以及心得体会。 1、加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要。我们需要对应用中的多项数据进行加密处理,从而来保证应用上线后的安全性,给用户

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包