我在oracle中有一个列ID,它是这样加密的:
select CAST(DBMS_CRYPTO.encrypt(UTL_RAW.CAST_TO_RAW('SECRETSTRING'), 4356 , 'SOMEKEY') AS VARCHAR2(100 char)) as temp from dual;现在我正在用熊猫在蟒蛇上读这张桌子。现在我想在python中解密这个。我试过几种方法,但我无法破解它。
以下是我尝试过的几点:
1)
from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes
def decrypty(enc):
    unpad = lambda s: s[:-ord(s[-1:])]
    enc = base64.b64decode(enc)
    iv = enc[:AES.block_size]
    cipher = AES.new(__key__, AES.MODE_CFB, iv)
    return unpad(base64.b64decode(cipher.decrypt(enc[AES.block_size:])).decode('utf8'))这引发了一个错误: binascii.Error:无效的be 64编码字符串:数据字符(1)的数量不能超过4的倍数。
2)
from Crypto.Cipher import AES
from Crypto import Random
def decrypt(key, enc):
    enc = base64.b64decode(enc)
    iv = enc[:16]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(enc[16:]), block_size=16)这引发了一个与填充相关的错误。
基本上,如果某些东西在DB中用密钥加密,使用相同的密钥,我就无法在python中解密它。有什么指示吗?
发布于 2022-04-07 09:21:19
如果数据库进行了加密,我肯定会建议再次使用数据库进行解密,如果可能的话。
如果无法同时使用数据库进行加密和解密,请将它们都放在python代码中。
关闭en/的代码,并使用相同的bug。还有:加密的原因是什么?也许这些数据并不意味着您的应用程序可以读取这些数据。
https://stackoverflow.com/questions/71778030
复制相似问题