是否可以使用密钥和 AES 标准解密 base 64 文本?
Is it possible to decrypt a base 64 text with a key and AES standard?
我正在使用 Python 和 Pycryptodome 库。
我有一个以 951bd9...[and so on]
.
开头的字符串
假设我有一把钥匙"ThisIsARandomText"
.
我的问题是:我可以用 AES 算法和那个密钥解密那个字符串吗?
我想我还没有完全理解,我很乐意提供一些解释来改进。
非常感谢您的帮助!
我看到这里有两个问题:首先,如果你想使用pycryptodome,你需要解码Base64字符串进行处理。
第二个更复杂。你知道 base64 字符串是用 AES 加密的。但也有必要知道(或猜测)block cipher mode of operation. Depending on the mode, you might also need a nonce for the decryption. In other cases, it is necessary to know the initialization vector.
由于您未在此处提供随机数,因此我为您提供了一个使用 OpenPGP 模式使用 base64 编码消息的 pycryptodome 示例。幸运的是,OpenPGP 将加密的 IV 存储到加密消息的前 18 个字节中。
import base64
from Crypto.Cipher import AES
input_data = b'This is secret message'
key = b'Sixteen byte key'
## ENCRYPTION
encryption_cipher = AES.new(key, AES.MODE_OPENPGP)
# use a nonce, e.g when the mode is AES.MODE_EAX
#nonce = encryption_cipher.nonce
ciphertext = encryption_cipher.encrypt(input_data)
b64_ciphertext = base64.b64encode(ciphertext).decode()
print("Base64 of AES-encrypted message: ", b64_ciphertext)
## DECRYPTION
unb64_ciphertext = base64.b64decode(b64_ciphertext.encode())
iv = unb64_ciphertext[0:18]
unb64_ciphertext = unb64_ciphertext[18:]
decryption_cipher = AES.new(key, AES.MODE_OPENPGP, iv=iv)#, nonce=nonce)
output_data = decryption_cipher.decrypt(unb64_ciphertext)
print("Decrypted message: ", output_data)
此代码取自 pycryptodome docs。我根据您的用例对其进行了调整,并包括了对 Base64 输入字符串的处理。
我正在使用 Python 和 Pycryptodome 库。
我有一个以 951bd9...[and so on]
.
开头的字符串
假设我有一把钥匙"ThisIsARandomText"
.
我的问题是:我可以用 AES 算法和那个密钥解密那个字符串吗?
我想我还没有完全理解,我很乐意提供一些解释来改进。
非常感谢您的帮助!
我看到这里有两个问题:首先,如果你想使用pycryptodome,你需要解码Base64字符串进行处理。
第二个更复杂。你知道 base64 字符串是用 AES 加密的。但也有必要知道(或猜测)block cipher mode of operation. Depending on the mode, you might also need a nonce for the decryption. In other cases, it is necessary to know the initialization vector.
由于您未在此处提供随机数,因此我为您提供了一个使用 OpenPGP 模式使用 base64 编码消息的 pycryptodome 示例。幸运的是,OpenPGP 将加密的 IV 存储到加密消息的前 18 个字节中。
import base64
from Crypto.Cipher import AES
input_data = b'This is secret message'
key = b'Sixteen byte key'
## ENCRYPTION
encryption_cipher = AES.new(key, AES.MODE_OPENPGP)
# use a nonce, e.g when the mode is AES.MODE_EAX
#nonce = encryption_cipher.nonce
ciphertext = encryption_cipher.encrypt(input_data)
b64_ciphertext = base64.b64encode(ciphertext).decode()
print("Base64 of AES-encrypted message: ", b64_ciphertext)
## DECRYPTION
unb64_ciphertext = base64.b64decode(b64_ciphertext.encode())
iv = unb64_ciphertext[0:18]
unb64_ciphertext = unb64_ciphertext[18:]
decryption_cipher = AES.new(key, AES.MODE_OPENPGP, iv=iv)#, nonce=nonce)
output_data = decryption_cipher.decrypt(unb64_ciphertext)
print("Decrypted message: ", output_data)
此代码取自 pycryptodome docs。我根据您的用例对其进行了调整,并包括了对 Base64 输入字符串的处理。