当前位置: 首页 > article >正文

python加密算法

常用的加密算法说明

  • 单向加密(不可解密):md5,sha
  • 对称加密(加密与解密秘钥是一样的):AES,DES
  • 非对称加密(有公钥和私钥):RSA,DSA
  • base64算法:不是加密,它是编码解码

md5加密

import hashlib
# 传入需要加密的数据
data="test_data"
md = hashlib.md5()
md.update(data.encode("utf8"))
print(md.hexdigest())

sha1加密

import hashlib
# 传入需要加密的数据
data="test_data"
sha = hashlib.sha1()
sha.update(data.encode('utf-8')) 
print(sha.hexdigest())

des加密

# 前端提交的数据加密,请求体中加密---》一般使用AES,DES---》要在后端解密

# pip3 install pycryptodomex
# DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。

from Cryptodome.Cipher import DES
key = b'12345678'
data = "test_data"
count = 8 - (len(data) % 8)
plaintext = data + count * "="
des = DES.new(key, DES.MODE_ECB)
#加密
ciphertext = des.encrypt(plaintext.encode())
print(ciphertext)
#解密
plaintext = des.decrypt(ciphertext)
plaintext = plaintext[:(len(plaintext)-count)]
print(plaintext)

RSA加密

# 安装模块
# pip3 install rsa

import rsa
# 返回 公钥加密 私钥解密
public_key, private_key = rsa.newkeys(1024)
print(public_key)
print(private_key)

# 传入数据
plaintext = b"test_data"

# 公钥加密
ciphertext = rsa.encrypt(plaintext, public_key)  
print('公钥加密:',ciphertext)

# 私钥解密
plaintext = rsa.decrypt(ciphertext, private_key) 
print('私钥解密:',plaintext)

### 使用私钥签名
plaintext = b"test_data"
sign_message = rsa.sign(plaintext, private_key, "MD5")
print('私钥签名后:',sign_message)

## 验证私钥签名
plaintext = b"test_data"
method = rsa.verify(b"test_data", sign_message, public_key)
print(method)

base64编码和解码

# 看到结尾有 =  就是base64编码
# base64编码的长度:需为4的倍数,如果不是4的倍数,会自动使用=补齐
# 所以结尾的 = 不会超过3个
import base64
# 编码
res=base64.b64encode(b'test_data1')  # dGVzdF9kYXRhMQ==
print(res)
# 解码
res=base64.b64decode('dGVzdF9kYXRhMQ==')
print(res)

http://www.kler.cn/a/458186.html

相关文章:

  • Three.js教程008:使用lil-GUI调试开发3D效果
  • 欧拉-伯努利梁自由波动的频散关系
  • 家用电器销售系统|Java|SSM|JSP|
  • .NET在中国的就业前景:开源与跨平台带来的新机遇
  • HTML——38.Span标签和字符实体
  • Windows安装了pnpm后无法在Vscode中使用
  • PyTorch快速入门教程【小土堆】之Transforms的使用
  • 【Rust自学】7.6. 将模块拆分为不同文件
  • Spring Boot 学习笔记
  • Hive之import和export使用详解
  • linux学习笔记(一).学习路径+学习流程+起源
  • AIDD -人工智能药物设计 -蛋白质柔性的预测
  • windows C#-使用集合初始值设定项初始化字典
  • 基于FPGA的温度控制系统设计(论文+源码)
  • BUUCTF Pwn ciscn_2019_es_2 WP
  • dl笔记:MOE
  • 人工智能知识分享第三天-机器学习中交叉验证和网格搜索
  • uniapp不能直接修改props的数据原理浅析
  • 《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合
  • Nacos配置管理+共享配置、配置热更新
  • [Unity Shader][Unity Shader][图形渲染]Shader数学基础19-选择使用3×3或4×4变换矩阵的技巧
  • 音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
  • 设计宝藏解压密码
  • 单片机优先级
  • Java实现简单爬虫——爬取疫情数据
  • 定义Shape:打造属于你的独特图形