Python实现数据加密-解密
Python实现数据加密-解密
运行环境:
OS:macOS Monterey Version 12.3.1(英文版)
IDE:PyCharm 2020.1
1 . PyCryptodome库安装
PyCryptodome是Python中一种强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。目前该库函数支持Python 2和Python 3两种不同版本。安装方式也极其简单,以pip方式进行安装。安装过程如下:
Linux环境:
(venv) (base) liuxiaowei@MacBookAir 漏洞检测与防御 % sudo pip3 install -i https://pypi.douban.com/simple pycryptodome
结果如下图:
Windows环境:
C:\cmder
λ pip3 install -i https://pypi.douban.com/simple pycryptodomex
结果如下图:
2. Python实现Base64编/解码
严格意义上讲,Base64编码算法并不算是加密算法,Base64编码只是将数据转码,而且转码的规则是公开的。
2.1 Base64编码方式
示例代码如下:
import base64
s = 'ms08067'
bs = base64.b64encode(s.encode('utf-8'))
print(bs)
结果如下:
b'bXMwODA2Nw=='
2.2 Base64解码方式
示例代码如下:
import base64
bs = 'bXMwODA2Nw=='
bbs = str(base64.b64decode(bs), 'utf-8')
print(bbs)
结果如下:
ms08067
3. Python实现DES加解密
3.1 DES加密
示例代码如下:
from Cryptodome.Cipher import DES
import binasciikey = b'abcdefgh' # key的长度约为8字节
des = DES.new(key, DES.MODE_ECB) # ECB模式
text = 'ms08067.com'
text = text + (8 - (len(text) % 8)) * '='
encrypt_text = des.encrypt(text.encode())
encryptResult = binascii.b2a_hex(encrypt_text) # b2a_hex
print(text)
print(encryptResult)
结果如下:
ms08067.com=====
b'b81fcb047936afb76487dda463334767'
3.2 DES解密
示例代码如下:
from Cryptodome.Cipher import DES
import binasciikey = b'abcdefgh' # key的长度必须为8字节
des = DES.new(key, DES.MODE_ECB) # ECB模式
encryptResult = b'b81fcb047936afb76487dda463334767'
encrypto_text = binascii.a2b_hex(encryptResult) #a2b_hex
decryptResult = des.decrypt(encrypto_text)
print(decryptResult)
结果如下:
b'ms08067.com====='
4. Python实现AES加解密
4.1 AES加密
示例代码如下:
from Cryptodome.Cipher import AES
import binascii
key = b'abcdefghabcdefgh' # key 的长度必须为8字节
text = 'baidu.com' # 被加密的数据需要为8字节的倍数text = text +(16- len(text) % 16) * '='
aes = AES.new(key, AES.MODE_ECB) # ECB模式
encrypto_text =aes.encrypt(text.encode())
encryptResult = binascii.b2a_hex(encrypto_text) # b2a_hex
print(text)
print(encryptResult)
结果如下:
baidu.com=======
b'7838f1b0f8d26e5c563778670fd0d6e0'
4.2 AES解密
示例代码如下:
from Cryptodome.Cipher import AES
import binasciikey = b'abcdefghabcdefgh' # key 的长度必须为8字节
encryptResult = b'7838f1b0f8d26e5c563778670fd0d6e0'
aes = AES.new(key, AES.MODE_ECB) # ECB模式
encrypto_text = binascii.a2b_hex(encryptResult) # a2b_hex
decryptResult = aes.decrypt(encrypto_text)
print(decryptResult)
结果如下:
b'baidu.com======='
5. Python实现MD5加密
示例代码如下:
from hashlib import md5def encrypt_md5(s):new_md5 = md5() # 创建md5对象new_md5.update(s.encode(encoding='utf-8'))# 返回信息摘要return new_md5.hexdigest()if __name__ == '__main__':print(encrypt_md5('ms08067.com'))
结果如下:
0961f18e7a720a53797aa038c9c643d1
通过在线工具验证,如下图:
Python实现数据加密-解密相关推荐
- 【Python】数据加密解密技术
Python如何加密解密?感兴趣的小伙伴可以举一下脚,我看看有多少.咳咳咳,正式开始了,今天给大家分享的是Python如何加密解密,感兴趣的小伙伴要认真学起来. 前言 加密算法主要分为:哈希算法.对称 ...
- RSA数据加密解密(各种语言)
RSA数据加密解密文档 增强数据传输与本地日志的数据安全 数据加密方式 使用rsa加密算法,客户端公钥加密,服务端私钥解密 (若单次传输数据量过大,之后可引入aes rsa只加密iv部分) 数据加密步 ...
- python 加密和解密
python 加密和解密 安装 linux pip3 install pycryptodome windows pip install pycryptodomex 创建密钥 from Cryptodo ...
- 数据结构(哈夫曼树+KMP)之 数据加密+解密
数据结构(哈夫曼树+KMP)之 数据加密+解密 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...
- java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码
RSA的应用 RSA是一种非对称加密算法.现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代 ...
- python实现pdf解密和pdf转图片
python实现pdf解密和pdf转图片 pdf解密 pdf转图片 pdf解密 安装PyPDF2 pip install PyPDF2 解密代码如下 # coding:utf-8 from PyPDF ...
- java使用RSA加密方式实现数据加密解密
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代码 public static void main(String arg ...
- Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!
文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...
- python rsa加密解密_RSA加密解密(python版)
RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度. e1和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质: ...
最新文章
- javascript基础——文字变大变小className的使用及JS浮动的兼容用法
- Android View关系图
- VS 2017显示“高级保存选项”命令操作方法
- VMP分析之VM解码循环与基本架构(一)
- 计算机网络那些事~(一)
- 笔记-信息系统安全管理-安全审计
- AtCoder AGC034D Manhattan Max Matching (费用流)
- golang beego快速入门示例(单文件hello.go)
- DNS服务器不能响应的四大解决办法
- Linux 服务器注意事项
- covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践
- 给恋爱中的女孩的忠告
- pythonajax学习_python学习-- django 2.1.7 ajax 请求
- arcgis支持python3吗_常见问题解答:ArcGIS 中使用的 Python 是什么版本?
- CRMEBv3.1微商城源码,含小程序商城,公众号商城,H5商城
- 汇编语言子程序设计 查找电话号码
- 利用Scrapy爬取豆瓣电影
- UE4第三人称多人联机游戏开发01
- 研华PCI板卡驱动装不了问题解决
- cannot dynamically load executable的尴尬经历
热门文章
- 行波进位加法器C语言,行波进位加法器原理
- 马云鹤:人间四月,芳菲深处是流年
- mysql 双机备份_MySQL的高可用之-双机热备份
- Linux内核态内存泄露检测工具——Kmemleak
- 订单参数异常,请重新下单后再发起付款(ALIN42273)
- 不知道做什么副业,如何选择副业,副业的重要性
- 计算机数字信号原理,数字滤波器是什么?数字滤波器的工作原理
- 基于SPI协议的SPI-FLASH(M25P16V/W25Q16JV)控制器-全擦除
- 金庸写的是侠,古龙写的是义,诛仙写的是情
- ubuntu安装bochs,nasm