gpt4 book ai didi

performance - 索引使用 pkg_crypto 加密的列

转载 作者:行者123 更新时间:2023-12-04 03:17:35 25 4
gpt4 key购买 nike

我正在从事一个使用 pkg_crypto 来保护用户个人信息的项目。有几千行(预计可能会增长到几万行),每当我在查询中使用 WHEREORDER BY 子句时,整个表在返回结果之前被解密。单个查询需要几秒钟,这可用于开发,但可能不太适合发布。

有没有一种方法可以在不影响安全性的情况下创建一个可在加密列上运行的索引?

插入和选择看起来像这样(使用 iBatis):

插入:

INSERT INTO "USER_TABLE" 
(
"ID"
,"LOGIN"
,"PASSWORD"
,"NAME"
,"EMAIL"
)
VALUES
(
user_table_seq.nextval,
#login#
,#password#
,pkg_crypto.encrypt(#name#, 'key')
,pkg_crypto.encrypt(#email#, 'key')
)

选择:

SELECT 
"ID"
,"LOGIN"
,"PASSWORD"
,pkg_crypto.decrypt("NAME", 'key') NAME
,pkg_crypto.decrypt("EMAIL", 'key') EMAIL
FROM "USER_TABLE"
WHERE pkg_crypto.decrypt("NAME", 'key') LIKE #name# || '%'
AND pkg_crypto.decrypt("EMAIL", 'key') LIKE '%' || #email#

我会先发制人地说,密码在传递给数据库之前由 servlet 进行哈希处理。

最佳答案

您是否需要使用 PKG_CRYPTO 来加密数据(我假设,这是您编写的调用 DBMS_CRYPTODBMS_OBFUSCATION_TOOLKIT? Oracle 有一个名为 transparent data encryption (TDE) 的功能(尽管这是一个额外的成本选项),它允许您让 Oracle 透明地加密磁盘上的数据,在从磁盘读取数据时对其进行解密,然后使用这种 LIKE 断言您的数据。

关于performance - 索引使用 pkg_crypto 加密的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com