用aes进行加密的python算法
时间: 2024-10-17 19:02:49 浏览: 6
AES (Advanced Encryption Standard) 是一种广泛使用的块加密算法,用于保护数据的安全传输和存储。在Python中,我们可以使用`cryptography`库来实现AES加密。以下是一个简单的步骤:
1. **安装依赖**:
首先需要安装`cryptography`库,你可以通过pip安装:
```bash
pip install cryptography
```
2. **导入模块**:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from base64 import b64encode, b64decode
```
3. **创建密钥和初始化器**:
AES接受128位、192位或256位的密钥。例如,生成一个16字节(128位)的密钥:
```python
key = b'Sixteen byte key'
```
然后创建一个cipher对象:
```python
cipher = AES.new(key, AES.MODE_CBC)
```
4. **加密过程**:
- `pad`函数会填充明文数据使其长度成为AES块大小的倍数。
- 对明文进行加密,通常需要一个初始向量(IV),可以随机生成并保存以便解密:
```python
plaintext = "Your message to be encrypted"
padded_plaintext = pad(plaintext.encode(), AES.block_size)
ciphertext = cipher.encrypt(padded_plaintext)
```
5. **Base64编码**:
可能需要将结果转换为Base64编码以方便在网络上传输,解码时再还原:
```python
encoded_ciphertext = b64encode(ciphertext).decode()
```
6. **解密过程**:
- 只有拥有相同密钥的人才能解密,首先从原始数据中提取IV,然后解密并去填充:
```python
decoded_ciphertext = b64decode(encoded_ciphertext)
iv = decoded_ciphertext[:16] # 假设CBC模式下IV位于前面
decrypted_padded_plaintext = cipher.decrypt(decoded_ciphertext[16:])
unpadded_plaintext = unpad(decrypted_padded_plaintext, AES.block_size).decode()
```
阅读全文