技术文摘
用Python实现对称数据加密
2025-01-08 23:29:29 小编
用Python实现对称数据加密
在当今数字化时代,数据安全至关重要。对称加密作为一种常用的加密方式,能够有效保护数据的机密性。Python凭借其丰富的库和简洁的语法,为实现对称数据加密提供了便利。
对称加密算法中,加密和解密使用相同的密钥。常见的对称加密算法有DES、3DES、AES等。在Python中,我们可以借助第三方库pycryptodome来实现这些算法。需要安装该库,可以使用命令pip install pycryptodome。
以AES算法为例,实现对称加密的过程如下。首先导入必要的模块:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
接下来,生成一个固定长度的密钥和初始化向量(IV)。AES算法支持128位、192位和256位的密钥长度。这里我们选择256位密钥:
key = b'sixteen byte key'
iv = b'sixteen byte iv'
加密函数的实现:
def encrypt(plaintext):
cipher = AES.new(key, AES.MODE_CBC, iv)
padded_plaintext = pad(plaintext.encode('utf-8'), AES.block_size)
ciphertext = cipher.encrypt(padded_plaintext)
return base64.b64encode(ciphertext).decode('utf-8')
在这个函数中,首先创建AES加密对象,采用CBC模式并传入IV。然后对明文进行填充,使其长度为AES块大小的倍数,最后进行加密并将结果进行Base64编码。
解密函数则是加密的逆过程:
def decrypt(ciphertext):
cipher = AES.new(key, AES.MODE_CBC, iv)
decoded_ciphertext = base64.b64decode(ciphertext)
unpadded_plaintext = unpad(cipher.decrypt(decoded_ciphertext), AES.block_size)
return unpadded_plaintext.decode('utf-8')
这里先对密文进行Base64解码,再创建解密对象,对解码后的密文进行解密并去除填充。
使用示例:
plaintext = "Hello, World!"
encrypted_text = encrypt(plaintext)
decrypted_text = decrypt(encrypted_text)
print(f"Original: {plaintext}")
print(f"Encrypted: {encrypted_text}")
print(f"Decrypted: {decrypted_text}")
通过以上代码,我们实现了使用AES算法的对称数据加密和解密。利用Python和pycryptodome库,开发者可以轻松为项目添加数据加密功能,保障数据在传输和存储过程中的安全。不同的对称加密算法各有特点,开发者可根据具体需求选择合适的算法来保护数据安全。
- 轻松掌握 Jupyter 主题与目录设置方法
- Python 基础之列表介绍与循环遍历:一文读懂
- Python 网页开发轻量级框架 Flask 知识盘点(上篇)
- Dubbo 2.7 应用级服务发现的踩坑经历
- 11 个 VS Code 特性与技巧,你需知晓
- Spring @Transactional 注解的事务执行机制
- 十种优秀 Python 图形界面(GUI)框架任你挑
- 工作中实用的代码优化技巧分享
- 高级开发为何被构造器循环依赖困扰?
- 2021 年前端编程的发展走向
- 内存溢出的分析与解决实践
- Redisson 分布式锁源码之可重入锁加锁
- 后端技术:Mybatis 中 resultMap 的用法示例笔记
- 算法基础(一):算法的时间空间复杂度
- Webpack 原理之产物转译打包逻辑解析