如何在python中解密openssl AES-256-GCM加密的数据
因此,我用以下linux加密了一些文本:如何在python中解密openssl AES-256-GCM加密的数据,python,encryption,openssl,Python,Encryption,Openssl,因此,我用以下linux加密了一些文本: echo abc >> in openssl enc -aes-256-gcm -base64 -k aaaaaaaaaaaaaaaa -iv 1234567890123456 -in in 我有以下输出: U2FsdGVkX18MpgFlt0vNFLXyrKI= 我可以用以下方法解密文本: echo "U2FsdGVkX18MpgFlt0vNFLXyrKI=" > in openssl enc -aes-256-
echo abc >> in
openssl enc -aes-256-gcm -base64 -k aaaaaaaaaaaaaaaa -iv 1234567890123456 -in in
我有以下输出:
U2FsdGVkX18MpgFlt0vNFLXyrKI=
我可以用以下方法解密文本:
echo "U2FsdGVkX18MpgFlt0vNFLXyrKI=" > in
openssl enc -aes-256-gcm -base64 -k aaaaaaaaaaaaaaaa -iv 1234567890123456 -in in -d
我有以下输出:
abc
我想要实现的是用python解密输出U2FsdGVkX18MpgF1t0vNFLXyrKI=
。但我已经尝试了很多我能找到的例子,但没有一个是有效的。我完全不懂
以下是我尝试过的:
from Cryptodome.Cipher import AES
import base64
# Just To test out
c = AES.new(b'aaaaaaaaaaaaaaaa',AES.MODE_GCM,b'1234567890123456')
enc = c.encrypt(b'abc')
print(enc)
# >> b'\xcaA\x8e'
c = AES.new(b'aaaaaaaaaaaaaaaa',AES.MODE_GCM,b'1234567890123456')
print(c.decrypt(enc))
# >> b'abc'
#Using the value from openssl
enc = base64.b64decode("U2FsdGVkX18MpgFlt0vNFLXyrKI=")
print(enc)
# >>b'Salted__\x0c\xa6\x01e\xb7K\xcd\x14\xb5\xf2\xac\xa2'
c = AES.new(b'aaaaaaaaaaaaaaaa',AES.MODE_GCM,b'1234567890123456')
print(c.decrypt(enc))
# >> b'\xf8B\x81\x98K\xcf\xebF\x92\x04{?v\xdb\xcbL\x8e\xab\x8f\xfa'
print(base64.b64encode(c.decrypt(enc)))
# >> b'l7aUC53L+qTiEzxWXziUEFckW/Y='
c = AES.new(base64.b64decode('aaaaaaaaaaaaaaaa'),AES.MODE_GCM,base64.b64decode('1234567890123456'))
#error....
print(c.decrypt(enc))
显然,openssl的enc文本是咸的,我不知道该怎么处理。至少显示您尝试了什么以及失败的地方!当然,我已经用
-k
更新了我的问题,并指定了密码。这是有意的吗?如果是这样,OpenSSL将使用一个密钥派生函数,这在发布的Python代码中缺失。但是,如果要使用钥匙,请使用-K
。请注意,-iv
和-K
需要十六进制数字,请参阅,这两种代码中似乎都不考虑十六进制数字。