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

调用Utilities.computeRsaSha256Signature时遇无效参数密钥错误求助

分析Google Apps Script中Utilities.computeRsaSha256Signature的密钥错误

问题重现

用户在code.gs中编写的代码:

let privatekey = 'IcA3+ZwPmUMtAou4f9hJMg==';
var key = `-----BEGIN PRIVATE KEY-----\n${privatekey}\n-----END PRIVATE KEY-----\n`;
console.log(key)

var signature = Utilities.computeRsaSha256Signature("this is my input", key);
Logger.log(signature);

控制台输出的密钥内容:

-----BEGIN PRIVATE KEY-----
IcA3+ZwEmUMtAou4f9hHMg==
-----END PRIVATE KEY-----

报错信息:

Exception: Invalid argument: key

错误原因

  • 你使用的私钥是残缺的Base64片段,长度远不足以构成有效的RSA私钥。标准RSA私钥(PKCS#8格式)需要包含完整的密钥结构信息(如模数、私钥指数、公钥指数等),不是一段短Base64字符串就能被识别。
  • Utilities.computeRsaSha256Signature对输入的私钥有严格要求:必须是完整的PKCS#8格式RSA私钥,且Base64编码无错误、无截断。当前的密钥内容无法被解析为合法的RSA私钥,因此触发"Invalid argument: key"错误。

解决步骤

  1. 生成完整的PKCS#8格式RSA私钥:
    使用OpenSSL工具生成,示例命令:
    # 生成原始RSA私钥
    openssl genrsa -out private_key.pem 2048
    # 转换为PKCS#8格式(无密码保护)
    openssl pkcs8 -topk8 -inform PEM -outform PEM -in private_key.pem -out private_key_pkcs8.pem -nocrypt
    
  2. 复制完整私钥到代码:
    打开生成的private_key_pkcs8.pem,将-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----之间的所有Base64内容完整复制到代码的privatekey变量中,确保保留所有换行或用\n替换。
  3. 验证密钥格式:
    确保密钥没有多余空格、截断或编码错误,控制台输出的密钥内容应与生成的pem文件完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:03:13