如何使用C#计算符合要求的AMP脚本哈希值
核心错误原因:你在计算过程中多余执行了「将哈希字节转为十六进制字符串」的步骤,AMP脚本的哈希规则要求直接对SHA384生成的原始二进制哈希结果做Base64Url编码,不需要先转十六进制格式,你原来的代码把十六进制字符串再做编码,自然和要求的结果不一致。
以下是修正后的可用实现:
// 计算脚本内容的SHA384哈希 var sha384 = SHA384.Create(); var hashBytes = sha384.ComputeHash(Encoding.UTF8.GetBytes(model.ScriptContents)); // 直接对原始哈希字节做Base64Url编码 var base64 = Convert.ToBase64String(hashBytes) .TrimEnd('=') .Replace('+', '-') .Replace('/', '_'); // 拼接前缀得到最终符合要求的哈希值 var hash = $"sha384-{base64}";
额外注意:计算哈希的脚本内容必须和实际运行的amp-script脚本内容完全一致,包括所有换行、空格、缩进等空白字符,任意字符差异都会导致哈希校验不通过。
内容的提问来源于stack exchange,提问作者Sam K
相关产品推荐
相关产品推荐

