Python实现数据加密-解密

简介: Python实现数据加密-解密

Python实现数据加密-解密
运行环境:

OS:macOS Monterey Version 12.3.1(英文版)

image.png

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

结果如下图:
image.png

Windows环境:

C:\cmder
λ pip3 install -i https://pypi.douban.com/simple pycryptodomex

结果如下图:

image.png

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 binascii

key = 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 binascii

key = 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 binascii

key = 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 md5

def 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

通过在线工具验证,如下图:

image.png

相关文章
|
9月前
|
数据采集 前端开发 JavaScript
Python爬虫如何应对网站的反爬加密策略?
Python爬虫如何应对网站的反爬加密策略?
679 11
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
601 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
算法 安全 Go
RSA加密算法详解与Python和Go实现
RSA加密算法详解与Python和Go实现
1656 1
|
存储 算法 安全
Python 加密算法详解与应用
Python 加密算法详解与应用
639 1
|
数据安全/隐私保护 Python
python学习十一:python常用模块使用,如 加密模块pyarmor,时间模块time等
这篇文章介绍了Python中两个常用模块的使用:加密模块pyarmor用于保护代码,以及时间模块time用于处理时间相关的功能。
751 0
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
510 0
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
885 0
|
安全 数据安全/隐私保护 开发者
保护敏感数据:使用Python加密数据的实用方法
保护敏感数据是一项基本的安全实践,Python通过上述库提供了强大的加密工具来实现这一目标。选择哪种方法取决于具体的应用场景和安全需求:对称加密(如AES)适合快速处理大量数据,而非对称加密(如RSA)更适合安全地交换密钥或进行身份验证。哈希函数则用于验证数据的完整性和一致性。通过合理使用这些技术,开发者可以大大增强其应用程序的安全性。
667 0
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
225 0
|
算法 安全 数据安全/隐私保护

推荐镜像

更多