在 Snowflake 中使用 DECRYPT 执行 AES 256 加密值的解密

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

我有一个雪花表,其中包含一个名为

answer
的加密字段 该字段在 Snowflake 外部加密,我想知道是否可以在 Snowflake 中使用 DECRYPT() 来解密该列。 我可以确认 SO 中推荐的帖子都不符合我的用例。

我尝试过以下方法

  1.  select to_varchar(
     decrypt(
         to_binary(
             'An encrypted String', 'HEX'
         ),
         'AES Key provided by the Encryption Team'
     ),
     'utf-8') as decrt
    
    

错误 -

The following string is not a legal hex-encoded value:

  1.      set passphrase = 'AES Key provided by the Encryption Team'
         select decrypt('An Encrypted String', $passphrase)
    

错误 -

Invalid argument types for function 'DECRYPT': (VARCHAR(48), VARCHAR(64))

encryption snowflake-cloud-data-platform aes
1个回答
0
投票

不,这是不可能的,因为派生的加密/解密密钥不仅取决于密码,还取决于 Snowflake 内部种子。

来自文档

Snowflake 使用 PBKDF2 密钥派生函数 以及 Snowflake 内部种子来根据给定的密码计算加密/解密密钥

由于此密钥派生,加密/解密功能不能用于:

  • 解密外部加密的数据。

  • 加密将在外部解密的数据。


PBKDF2 是标准化的,因此如果您愿意以其他方式工作,则可以创建兼容的方案。然而,加密/解密密钥的每一位都取决于种子,因此只要该种子不知道并被外部加密代码使用,解密就会失败。

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