首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解密python中的值,该值使用oracle中的DBMS_CRYPTO.encrypt加密

解密python中的值,该值使用oracle中的DBMS_CRYPTO.encrypt加密
EN

Stack Overflow用户
提问于 2022-04-07 07:30:52
回答 1查看 155关注 0票数 0

我在oracle中有一个列ID,它是这样加密的:

代码语言:javascript
运行
复制
select CAST(DBMS_CRYPTO.encrypt(UTL_RAW.CAST_TO_RAW('SECRETSTRING'), 4356 , 'SOMEKEY') AS VARCHAR2(100 char)) as temp from dual;

现在我正在用熊猫在蟒蛇上读这张桌子。现在我想在python中解密这个。我试过几种方法,但我无法破解它。

以下是我尝试过的几点:

1)

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
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中解密它。有什么指示吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-07 09:21:19

如果数据库进行了加密,我肯定会建议再次使用数据库进行解密,如果可能的话。

如果无法同时使用数据库进行加密和解密,请将它们都放在python代码中。

关闭en/的代码,并使用相同的bug。还有:加密的原因是什么?也许这些数据并不意味着您的应用程序可以读取这些数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71778030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档