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

在C#中使用Sinch REST API实现短信验证:授权编码问题求助

在C#中实现Sinch短信验证的签名生成方案

我帮你梳理下在C#里实现Sinch的APPLICATION SIGNED REQUEST授权时,生成Content-MD5和stringToSign的正确方式——之前我也踩过类似的坑,直接上实用的代码和关键注意点:

一、正确生成Content-MD5

Sinch要求的Content-MD5是请求体的MD5哈希值经过Base64编码后的字符串,你之前的代码只完成了哈希计算,还差一步转Base64。修正后的代码如下:

using Newtonsoft.Json;
using System.Security.Cryptography;
using System.Text;

// 1. 序列化请求体
var body = JsonConvert.SerializeObject(smsRequest);
// 2. 计算MD5哈希
using var md5 = MD5.Create();
var hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(body));
// 3. 转成Base64字符串(这步是关键!)
var contentMd5 = Convert.ToBase64String(hashBytes);

二、生成stringToSign

Sinch的stringToSign有严格的格式要求,必须按以下顺序拼接(每个部分用换行符\n分隔):

  • HTTP请求方法(比如POST)
  • Content-MD5值(上面生成的)
  • Content-Type(如果是JSON请求就是application/json)
  • RFC 1123格式的当前UTC时间(比如Tue, 15 Nov 1994 08:12:31 GMT)
  • 请求的路径(注意:只包含域名后的部分,比如调用批量短信API就是/xms/v1/{你的服务计划ID}/batches)

对应的C#实现代码:

// 1. 获取符合要求的时间字符串
var dateString = DateTime.UtcNow.ToString("r", System.Globalization.CultureInfo.InvariantCulture);
// 2. 定义请求方法和路径(替换成你的实际信息)
var httpMethod = "POST";
var requestPath = "/xms/v1/your-service-plan-id/batches";
var contentType = "application/json";

// 3. 拼接stringToSign
var stringToSign = string.Join("\n",
    httpMethod,
    contentMd5,
    contentType,
    dateString,
    requestPath);

三、生成最终的Authorization头

拿到stringToSign后,需要用你的Sinch API Secret作为密钥,通过HMAC-SHA256算法计算签名,再转Base64,最后组装成Authorization头:

// 替换成你的Sinch API密钥信息
var apiKey = "your-sinch-api-key";
var apiSecret = "your-sinch-api-secret";

using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign));
var signatureBase64 = Convert.ToBase64String(signatureBytes);

// 组装Authorization头
var authorizationHeader = $"Application {apiKey}:{signatureBase64}";

关键注意事项

  • 时间必须是UTC时间,且严格遵循RFC 1123格式,Sinch服务器会校验时间偏差,偏差过大直接拒绝请求
  • 请求路径必须和实际调用的API路径完全一致,不能包含域名、多余空格
  • 拼接stringToSign时,每个部分的顺序不能错,也不能遗漏换行符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:23:50