美文网首页
单向加密算法

单向加密算法

作者: 忘了呼吸的那只猫 | 来源:发表于2021-12-21 14:45 被阅读0次

单向加密算法,又称哈希函数、散列函数、杂凑函数、摘要算法,英文名One-way encryption algorithm

单向加密如其名只能加密不能解密(彩虹表攻击不能算是正经的解密方式),不能解密的原因是本质上并不是用IV(Initial Vector)去加密M输出M的密文,而是用M去加密IV输出IV的密文。

用途:消息认证摘要、内容或文档的数字指纹、口令存储。

单向加密又可以分为hashhmac两大类,hmachash的算法是一样的,其实可以认为hmac就是hash加盐的形式(不过这盐值不是hash中常用的拼接在最前边或拼接在最后边,具体怎么拼接的我不太确定)。

一般来说标准库就挺好用时我们一般就直接用标准库,python的标准库就能容易地实现单向加密算法,所以单向加密我们使用标准库实现。

pythonhash类算法使用hashlib库实现,hmac类算法使用hmac库实现。

标准库支持的单向加密算法

import hashlib # 注意输出结果中各算法使用大写和小写写了两遍 
# 同时也是说到后边的书写中算法名大写或小写都是可以的
hashlib.algorithms_available

使用hashlib实现hash算法(以md5为例)
import hashlib

# 实例化方法一,直接使用算法名;这种形式不完全支持hashlib.algorithms_available中的算法
# m = hashlib.md5()
# 实例化方法二,使用new方法;所有支持的算法名看上边hashlib.algorithms_available
m = hashlib.new("md5")
# update内是要加密的内容
# update使用+=,即连续多次update表示在原先内容上追加而不是替换
m.update(b"123456")
# 以十六进制字符串形式输出
m.hexdigest()

使用hmac实现hmac算法(以sha1为例)

import hmac

# 实例化原形是hmac.new(key, msg=None, digestmod=None)
# key--加密用的盐值
# msg--要加密码的内容,可为空而后用update方法设置
# digestmod--加密算法,默认为md5,所有支持的算法名看上边hashlib.algorithms_available
m = hmac.new(b"123",digestmod="sha1")
# update使用+=,即连续多次update表示在原先内容上追加而不是替换
# 但要注意所谓的+=是msg之间的+=,而不是key和msg之间的+=
# 即使用以下update后等价于hmac.new(b"123",b"123456", digestmod="sha1"),而不是hmac.new(b"123123456", digestmod="sha1")
m.update(b"123456")
# 以十六进制字符串形式输出
m.hexdigest()

ps:除了标准库,python三方库pycryptodome提供了更加完备的加密方式,包括对称加密和非对称加密

相关文章

  • 什么是AES算法

    概述 加密算法分为单向加密和双向加密。单向加密包括MD5,SHA等摘要算法。单向加密算法是不可逆的,也就是无法将加...

  • encyption&decyption

    0, 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 常用加密算法的Java实现总结(二) ...

  • iOS 常用加密与签名方式

    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和单向加密算法。对称加密算法(加解密密钥相同)常见的有:D...

  • 加密算法原理简述以及DNS主从服务器的搭建过程

    1、简述常见加密算法及常见加密算法原理,最好使用图例解说 加密算法类型:对称加密、非对称加密、单向加密、密钥交换 ...

  • 加密算法原理&&DNS服务原理及配置

    1).简述常见加密算法及常见加密算法原理,最好使用图例解说 加密算法类型: 对称加密、公钥加密、单向加密 各加密算...

  • 单向加密算法

    单向加密算法,又称哈希函数、散列函数、杂凑函数、摘要算法,英文名One-way encryption algori...

  • java 加密解密方式

    1、MD5(Message Digest Algorithm)加密算法 是一种单向加密算法,只能加密不能解密,示例...

  • 加密和安全

    1 安全机制 安全攻击: STRIDE 常用的安全算法 对称加密算法 非对称加密算法 单向算法 CA和证书 安全协...

  • 几种常见的加密算法及 Java 实现

    介绍 本文主要对加密算法做个概况性的介绍,然后给出几种简单的加密算法 Java 实现。 1. 算法种类 单向加密 ...

  • iOS加密方法base64,AES,DES,MD5,RSA

    加密算法的分类 base64 编码格式 密码学演化 "秘密本"-->RSA 常见的加密算法1)消息摘要(单向散列函...

网友评论

      本文标题:单向加密算法

      本文链接:https://www.haomeiwen.com/subject/hccxqrtx.html