python AES256
时间: 2023-10-12 16:05:48 浏览: 226
如果您只是想使用Python进行AES 256位加密和解密,而不涉及具体的加密模式(如CBC、ECB等),您可以使用`cryptography`库来实现。下面是一个示例代码:
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
from base64 import b64encode, b64decode
def aes_encrypt(key, data):
backend = default_backend()
iv = b'\x00' * 16 # 使用所有零的初始向量
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(data.encode()) + padder.finalize()
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
return b64encode(ciphertext).decode()
def aes_decrypt(key, encrypted_data):
backend = default_backend()
iv = b'\x00' * 16 # 使用所有零的初始向量
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
decryptor = cipher.decryptor()
ciphertext = b64decode(encrypted_data)
decrypted_padded_data = decryptor.update(ciphertext) + decryptor.finalize()
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
decrypted_data = unpadder.update(decrypted_padded_data) + unpadder.finalize()
return decrypted_data.decode()
# 示例使用
key = b'32字节的密钥' # 256位密钥长度为32字节
data = "要加密的数据"
encrypted_data = aes_encrypt(key, data)
print("加密后的数据:", encrypted_data)
decrypted_data = aes_decrypt(key, encrypted_data)
print("解密后的数据:", decrypted_data)
```
请注意,这里使用了所有零的初始向量(IV)和PKCS7填充(padder/unpadder)来确保数据长度满足AES块大小要求。您需要将`key`替换为您自己的256位密钥,并将`data`替换为您要加密的实际数据。
请记住,加密和解密操作所使用的密钥必须相同。如果您有其他疑问,请随时提问。
阅读全文