雪花UDF和数据加密

问题描述 投票:3回答:1

我想知道是否可以创建UDF,通过使用私钥对插入表内作为加密值的值进行解密。我在Google上搜索了一下,没有找到任何东西。我唯一发现的是,可能有一个选项可以用JavaScript UDF和CryptoJS来实现,但我无法理解是否真的可以导入CryptoJS模块来用于UDF。 根据我在文档中收集到的信息,这是不可能的。

有谁知道这样的功能、可能性或变通方法吗? 谢谢!我想知道是否可以将CryptoJS模块导入到UDF中。

javascript encryption user-defined-functions snowflake-cloud-data-platform private-key
1个回答
0
投票

其实你并不需要一个UDF来做这件事。Snowflake支持使用私钥的加密和解密功能。(从技术上讲,这个例子显示的是一个私人口令,它被转换成了私钥。不过它也支持直接的密钥规范,请继续阅读)。)

select encrypt('Hello, world.', '531daa2aec446116');  -- Displays as binary jibberish.
select hex_encode(encrypt('Hello, world.', '531daa2aec446116'));  -- Displays as HEX. Convert to hex to store as either binary or string.
create temporary table ENCRYPTED_TABLE(COL1 binary, COL2 string);
insert into ENCRYPTED_TABLE select hex_encode(encrypt('Hello, world.', '531daa2aec446116')), hex_encode(encrypt('Hello, world.', '531daa2aec446116'));
select decrypt(COL1, '531daa2aec446116'), decrypt(hex_decode_binary(COL2), '531daa2aec446116') from ENCRYPTED_TABLE;

如果你正在寻找一种方法来解密另一个系统加密的值,解密函数可能有用,也可能没用。Snowflake的加密和解密功能使用AES256密码的对称加密。如果源密码是AES-256,你可能会得到解密工作。如果源密码是其他的,就不行。你可能会想试试ENCRYPT_RAW函数,它可以接受一个密钥,而不是处理如何将口令变成密钥的复杂问题。

https:/docs.snowflake.comensql-referencefunctionsencrypt.html。

© www.soinside.com 2019 - 2024. All rights reserved.