Python中的加密算法

加密算法的分类

以算法是否可逆分为:

  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加密、盐值混淆

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏大橙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值