gpt4 book ai didi

sql - 在 Presto 查询中加密/混淆结果的想法?

转载 作者:行者123 更新时间:2023-12-04 16:06:48 25 4
gpt4 key购买 nike

场景:

  1. 我有一个要查询和发送的 Presto 表将结果发送给各种半信任方。
  2. 这些半信任方将分析数据并返回结果回到我身边。
  3. 此表中的某些数据是“半私有(private)”的——没有什么可以如果被发现会造成真正的伤害,但仍然是私有(private)的(比如设备的名称)。
  4. 此“半私有(private)”数据的签名对于 GROUP BY 子句很重要,但实际数据本身对半可信方并不重要。
  5. 当这些经过分析的数据返回给我时,我需要能够解密/去混淆这些“半私有(private)”数据,以便对其采取行动。

问题:

是否有人熟悉仅在 Presto SQL 查询中加密/混淆一列数据的方法,以后可以以确定的方式对其进行解密/反混淆?

我知道我可以轻松地对查询结果进行后处理并自行加密/混淆,但如果可能的话,我想利用 Presto 的分布式执行模型。

加密/混淆的级别不需要是不可破解的——只是比 base64 编码复杂一点(最好使用简单的 secret )。

最佳答案

经过更多研究,我偶然发现了 XOR cipher这似乎可以完全在 Presto DB 查询中实现。

我已经能够使用以下概念验证对其进行简要测试:

WITH

private_data AS (
SELECT 'some private string' as private
),

encrypted_data AS (
SELECT
zip_with(
regexp_extract_all(private, '.'),
regexp_extract_all(substr('a27e6f329c03461688d6866203aasdljfasaslksa7982k3lkjsd987fok2jlkj0sdf9c59c', 1, length(private)), '.'),
(x, y) ->
bitwise_xor(codepoint(cast(x as varchar(1))), codepoint(cast(y as varchar(1))))
) as encrypted_data
FROM private_data
),

decrypted_data AS (
SELECT
array_join(
zip_with(
encrypted_data,
regexp_extract_all(substr('a27e6f329c03461688d6866203aasdljfasaslksa7982k3lkjsd987fok2jlkj0sdf9c59c', 1, cardinality(encrypted_data)), '.'),
(x, y) ->
chr(bitwise_xor(x, codepoint(cast(y as varchar(1)))))
),
''
) as decrypted_string
FROM encrypted_data
)

SELECT
*
FROM private_data, encrypted_data, decrypted_data

它似乎可行,但我更愿意简化它。任何人都可以看到优化它的方法吗? (例如:从长度为 1 的 varchar 转换为 varchar(1) 看起来很荒谬,但如果我不这样做它会提示。还有 regexp_extract_all 是我能找到的将 varchar 转换为数组的唯一方法。)

关于sql - 在 Presto 查询中加密/混淆结果的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48394525/

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