为了账号安全,请及时绑定邮箱和手机立即绑定

如何解密 BigQuery 中的列?

如何解密 BigQuery 中的列?

慕斯709654 2021-09-30 10:20:48
我在 BigQuery 中有一些加密列,我想使用 BigQuery 函数对其进行解密。用于加密它们的机制是 AES 256。使用的向量以 UTF8 编码。生成的数据在 Base64 中加密。我想要做的是使用函数解密在 BigQuery 中传递给我的字段,而无需麻烦地在别处解密它们,然后将它们集成回 BigQuery。请注意,我在 BigQuery 中可以访问的加密列是字符串类型。我读了一些可以在 BigQuery 中解密的函数,如 AEAD.DECRYPT_BYTES 和 AEAD.DECRYPT_STRING,我想知道它们是否对我有帮助。有没有办法做到这一点?如果是这样,你能引导我完成整个过程吗?PS:那些不是实际的键值和向量值,只是一个相似的例子。
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

以下是如何使用带有 PKCS 填充的 AES-CBC 进行解密的示例。我不清楚您的示例中是否有有效的密钥/密文,因为我无法vector使用该密钥进行解密:


SELECT

  AEAD.DECRYPT_STRING(

    KEYS.ADD_KEY_FROM_RAW_BYTES(

      b'', 'AES_CBC_PKCS', FROM_BASE64('dfrBArd8b6YZFDGTYrZtQa==')),

    FROM_BASE64('/FCM1XMvr+rHwZx'), '');

这是一个有效的独立示例:


WITH EncryptedInput AS (

  SELECT FROM_HEX('deed2a88e73dccaa30a9e6e296f62be27db30db16f76d3f42c85d31db3f46376') AS ciphertext,

    b'1234567890123456' AS key UNION ALL

  SELECT FROM_HEX('deed2a88e73dccaa30a9e6e296f62be2ea3f4c2ac2c8863306fd9ff87e10497b61d86111fafd0d0fe0046d7e199044ec'),

    b'1234567890123456' UNION ALL

  SELECT FROM_HEX('0102030405060708090a0b0c0d0e0f1073d8712936ea9899952e97284288c1cd7b7cbfff0a53ae87a19454f7d84082a07a25fc01031b5e08c6b7ce6520989b82'),

    b'98765432101234567890123456789012' UNION ALL

  SELECT NULL, b'1234567890123456' UNION ALL

  SELECT FROM_HEX('deed2a88e73dccaa30a9e6e296f62be27db30db16f76d3f42c85d31db3f46376'),

    NULL

)

SELECT AEAD.DECRYPT_STRING(KEYS.ADD_KEY_FROM_RAW_BYTES(b'', 'AES_CBC_PKCS', key), ciphertext, '') AS plaintext

FROM EncryptedInput;


查看完整回答
反对 回复 2021-09-30
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信