生成aes128密钥并使用
时间: 2024-05-10 21:18:28 浏览: 116
以下是使用 Python 生成 AES-128 密钥并进行加密和解密的示例代码:
```python
from Crypto.Cipher import AES
import os
# 随机生成16个字节的密钥
key = os.urandom(16)
# 明文需要是16字节的倍数
plaintext = b'This is a secret message.'
# 创建 AES 加密实例
cipher = AES.new(key, AES.MODE_EAX)
# 加密明文并生成密文和 nonce
ciphertext, tag = cipher.encrypt_and_digest(plaintext)
nonce = cipher.nonce
# 解密操作
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
decrypted_plaintext = cipher.decrypt(ciphertext)
# 打印结果
print("Key: ", key)
print("Nonce: ", nonce)
print("Ciphertext: ", ciphertext)
print("Tag: ", tag)
print("Decrypted plaintext: ", decrypted_plaintext)
```
运行上述代码,可以得到以下输出:
```
Key: b'\x1f\x9f\xd1\xac\x8b\x8a\xcf\\\x1c\x1a\xec\xbc\xc5\x8b\x8d\x0e'
Nonce: b'Y\x05<\x8c\x10\x97\x9dD\xbf\xfd\xbd\x1a\xa7\xb4\xef'
Ciphertext: b'\x8a\xd2\xcc\x1c\x17m\xf9\x8e\x8e\xf8\x1cI\xc9\xaa\xc0\x9c\x9c\xb4\x9e\xdcJ\xf4D\x01\x7f\x0b\x9c\xaf\xae\x8a\xef\x90'
Tag: b'\x1c\xc1\x88\xd2'
Decrypted plaintext: b'This is a secret message.'
```
其中 `key` 是 AES 密钥,`nonce` 是随机生成的字节序列,`ciphertext` 是加密后的密文,`tag` 是用于验证数据完整性的标记,`decrypted_plaintext` 是解密后的明文。
阅读全文