将PostgreSQL逻辑更改为Bigquery

r8uurelv  于 5个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(51)

我在Bigquery PostgreSQL中遇到了这个逻辑问题:SELECT pgp_sym_decrypt_bytea('base64_byte', 'secret_key: text', 'cipher-algo=aes256')::text;
我尝试在BQ中转换为BQ逻辑:WITH EncryptedInput AS ( SELECT FROM_BASE64('encrypt_byte_from_base64') as ciphertext, FROM_HEX('secret_key: hex') AS key ) SELECT AEAD.DECRYPT_STRING(KEYS.ADD_KEY_FROM_RAW_BYTES(b'', 'AES_CBC_PKCS', key), ciphertext, '') AS plaintext FROM EncryptedInput;
但BQ显示错误:Failed to add a key from raw bytes: Unsupported key size: 18 bytes; expected 16, 24, or 32 bytes.; error in KEYS.ADD_KEY_FROM_RAW_BYTES expression
我应该在BQ查询中修改什么才能得到正确的结果?

7uzetpgm

7uzetpgm1#

AES仅支持128192256bits的Key长度,即162432bytes。如本BigQuery文档中所述,AES使用16字节的块大小,这意味着明文被视为16字节块的序列。因此,您必须将加密密钥长度从18字节更改为支持的密钥大小(162432字节)中的一种才能解决此问题。您还可以检查AEAD加密的块密码方法的GCM和CBC模式。

相关问题