You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks中用GCM模式调用aes_decrypt解密遇Tag mismatch错误求助

解决Databricks中AES-GCM解密的IV参数问题

GCM模式是带认证的加密算法,解密时必须使用与加密完全一致的IV(初始化向量),否则会触发Tag mismatch错误,这正是你遇到的问题。Spark的aes_decrypt函数支持在模式参数中显式指定IV,格式为GCM,iv:[编码后的IV值],具体处理方式如下:

关键说明

  • IV需要转换为base64或十六进制编码后传入模式参数
  • 你的密钥3uboo7wshaphu69e是16字节(128位),符合GCM模式的密钥长度要求

正确解密SQL

将你的IV字符串udukduo07ffu2shi转换为base64编码(结果为dWR1a2R1bzA3ZmZ1MnNoaQ==),然后在模式参数中指定:

%sql
SELECT cast(
  aes_decrypt(
    unbase64('pJvnV+03zyM+FMOMQqFCXWdeucmoPfgApbmp5l4SsdxUHCJw4IuWUQnd'),
    '3uboo7wshaphu69e',
    'GCM,iv:dWR1a2R1bzA3ZmZ1MnNoaQ=='
  ) AS STRING);

或者动态生成IV的base64编码,避免手动转换:

%sql
SELECT cast(
  aes_decrypt(
    unbase64('pJvnV+03zyM+FMOMQqFCXWdeucmoPfgApbmp5l4SsdxUHCJw4IuWUQnd'),
    '3uboo7wshaphu69e',
    concat('GCM,iv:', encode(cast('udukduo07ffu2shi' AS BINARY), 'base64'))
  ) AS STRING);

错误原因解释

你之前的调用未指定IV,aes_decrypt会使用默认值(或错误的IV),导致GCM的认证标签验证失败,抛出Tag mismatch!异常。GCM模式对IV的一致性要求极高,必须保证加密和解密使用完全相同的IV才能成功解密并通过认证。

内容的提问来源于stack exchange,提问作者sm925

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:17:12