加密算法的分类

以算法是否可逆分为:

  1. 可逆算法
  2. 不可逆算法(hash算法)

在可逆算法中根据是否使用同一个密钥可分为:

  • 对称加密:解密与加密使用的是同一个密钥
  • 不对称加密:解密与加密使用的是一对密钥(公钥、密钥)

对称加密算法的优点:加密与解密的高速度和使用长密钥时的难破解性

对称加密算法的缺点:不安全

非对称加密算法的优点:安全

非对称加密算法的缺点:速度慢,效率低

hash(哈希)算法:符合散列思想的算法

解释:把任意长度的输入通过散列算法变换成固定长度的输出,该输出成为散列值,其转换就是压缩映射,一般来说散列值空间通常小于输入空间,不同的输入可能会散列成相同的输出,因此不能从散列值缺点唯一的输入值

哈希算法又称摘要算法,因此摘要也称哈希值、散列值,即输入任何长度的数据,都会输出固定长度的数据,该数据就称为哈希值

hashlib库

python中的hashlib模块即是一个专门提供hash算法的模块(其中包括md5、sha1、sha224、sha256、sha384、sha512等等)

hash算法的实现:

创建一个算法对象(接收的是字节数据而不是字符串,因此我们需要将字符串转换为字节数据)

import hashlib
#创建一个算法对象
a = hashlib.md5("123".encode("utf-8"))
print(a.hexdigest())

其打印结果为密文:

202cb962ac59075b964b07152d234b70

验证其密文可使用md5在线解密破解,md5解密加密来验证

在没有盐值混淆的情况下,其密文很容易被破解

因此一般要使用盐值混淆进行加密处理(盐值越复杂,安全性越高):

import hashlib
#创建一个算法对象
a = hashlib.md5("123".encode("utf-8"))

#盐值混淆
a.update("123##&*^*&^*5#".encode("utf-8"))
print(a.hexdigest())

7062956fc04808dec4c42c783f032938

哈希运算消息认证码

Hmac为Hash-based Message Authentication Code的缩写,hmac即密钥相关的哈希运算消息认证码,它是一个需要密钥的算法,可以对可变长度的消息进行认证,把输出的结果作为认证符

hmac库

hmac库也为一个哈希加密库(对称加密),在hmac库中提供了一个new函数来创建对象去计算消息签名

import hmac,hashlib
a = hmac.new("123".encode("utf-8"),"$%^*".encode("utf-8"),hashlib.md5)
print(a.hexdigest())

其中第一个参数为要加密的字符串,第二个参数为盐值,第三个参数为加密算法

在这个过程中首先使用了对称加密(盐值为密钥),后将加密后的数据进行了hash加密、盐值混淆

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐