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实现数据加密-解密相关推荐

  1. 【Python】数据加密解密技术

    Python如何加密解密?感兴趣的小伙伴可以举一下脚,我看看有多少.咳咳咳,正式开始了,今天给大家分享的是Python如何加密解密,感兴趣的小伙伴要认真学起来. 前言 加密算法主要分为:哈希算法.对称 ...

  2. RSA数据加密解密(各种语言)

    RSA数据加密解密文档 增强数据传输与本地日志的数据安全 数据加密方式 使用rsa加密算法,客户端公钥加密,服务端私钥解密 (若单次传输数据量过大,之后可引入aes rsa只加密iv部分) 数据加密步 ...

  3. python 加密和解密

    python 加密和解密 安装 linux pip3 install pycryptodome windows pip install pycryptodomex 创建密钥 from Cryptodo ...

  4. 数据结构(哈夫曼树+KMP)之 数据加密+解密

    数据结构(哈夫曼树+KMP)之 数据加密+解密 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...

  5. java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码

    RSA的应用 RSA是一种非对称加密算法.现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代 ...

  6. python实现pdf解密和pdf转图片

    python实现pdf解密和pdf转图片 pdf解密 pdf转图片 pdf解密 安装PyPDF2 pip install PyPDF2 解密代码如下 # coding:utf-8 from PyPDF ...

  7. java使用RSA加密方式实现数据加密解密

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代码 public static void main(String arg ...

  8. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...

  9. python rsa加密解密_RSA加密解密(python版)

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度. e1和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质: ...

最新文章

  1. javascript基础——文字变大变小className的使用及JS浮动的兼容用法
  2. Android View关系图
  3. VS 2017显示“高级保存选项”命令操作方法
  4. VMP分析之VM解码循环与基本架构(一)
  5. 计算机网络那些事~(一)
  6. 笔记-信息系统安全管理-安全审计
  7. AtCoder AGC034D Manhattan Max Matching (费用流)
  8. golang beego快速入门示例(单文件hello.go)
  9. DNS服务器不能响应的四大解决办法
  10. Linux 服务器注意事项
  11. covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践
  12. 给恋爱中的女孩的忠告
  13. pythonajax学习_python学习-- django 2.1.7 ajax 请求
  14. arcgis支持python3吗_常见问题解答:ArcGIS 中使用的 Python 是什么版本?
  15. CRMEBv3.1微商城源码,含小程序商城,公众号商城,H5商城
  16. 汇编语言子程序设计 查找电话号码
  17. 利用Scrapy爬取豆瓣电影
  18. UE4第三人称多人联机游戏开发01
  19. 研华PCI板卡驱动装不了问题解决
  20. cannot dynamically load executable的尴尬经历

热门文章

  1. 行波进位加法器C语言,行波进位加法器原理
  2. 马云鹤:人间四月,芳菲深处是流年
  3. mysql 双机备份_MySQL的高可用之-双机热备份
  4. Linux内核态内存泄露检测工具——Kmemleak
  5. 订单参数异常,请重新下单后再发起付款(ALIN42273)
  6. 不知道做什么副业,如何选择副业,副业的重要性
  7. 计算机数字信号原理,数字滤波器是什么?数字滤波器的工作原理
  8. 基于SPI协议的SPI-FLASH(M25P16V/W25Q16JV)控制器-全擦除
  9. 金庸写的是侠,古龙写的是义,诛仙写的是情
  10. ubuntu安装bochs,nasm