不要调用cryptography库
时间: 2024-11-05 16:32:56 浏览: 6
Python库 | cryptography_vectors-0.9.3.tar.gz
如果你不想使用第三方库如`cryptography`,Python标准库提供了一种更底层的方式来实现AES CBC加密。不过,这种方法需要处理填充和位移等细节,代码会比较复杂。以下是一个仅使用Python标准库的例子:
```python
from Crypto.Cipher import AES
import os
from binascii import unhexlify, hexlify
# 定义AES块大小
BLOCK_SIZE = AES.block_size
# 获取随机的16字节初始化向量
iv = os.urandom(BLOCK_SIZE)
key = b'sixteen_byte_key' # 你需要将这16字节替换为实际密钥
def pad(data):
return data + (BLOCK_SIZE - len(data) % BLOCK_SIZE) * chr(BLOCK_SIZE - len(data) % BLOCK_SIZE)
def xor_bytes(a, b):
return bytes(x ^ y for x, y in zip(a, b))
def encrypt(plaintext, key, iv):
plaintext = pad(plaintext.encode())
cipher = AES.new(key, AES.MODE_CBC, iv)
ciphertext = cipher.encrypt(plaintext)
return hexlify(cipher.iv + ciphertext)
# 示例
plaintext = 'Hello, AES CBC!'
ciphertext = encrypt(plaintext, key, iv)
print(f"Ciphertext: {ciphertext.decode()}")
阅读全文