//C# 生成签名 在通过H5 发布视频到抖音时提示签名不正确,还请各位大神看看我哪写的有问题,感谢!
//时间戳
TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
//随机字符串
string noncestr ="WmWJPZ1029W";
//通过client_access_token 获取 ticket
string tickect =#LmaYQZ+fCTbSh09Yz2Jiu8VCgXHebF5uNs7nAd73z4Pwq+eBACEsVsaROoVEntHkVx55rId8iYdQ+wtEPvnWPA==
//生成签名的字符串
string str = "nonce_str=WmWJPZ1029W&tickect=#LmaYQZ+fCTbSh09Yz2Jiu8VCgXHebF5uNs7nAd73z4Pwq+eBACEsVsaROoVEntHkVx55rId8iYdQ+wtEPvnWPA==×tamp=1650941858";
//MD5生成签名
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
//MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
//byte[] s = md5Hasher.ComputeHash(Encoding.Default.GetBytes(str));
for (int i=0;i<s.Length;i++)
{
//rule += s[i].ToString("x2");
rule += s[i].ToString("X").PadLeft(2, '0');
}
string signature= rule;
我在获取签名的时候得到的tickect都是以#开头的,文档是以@开头,这个有关系吗?
请各位大神指点迷津啊!
4. 根据 ticket 和其他字段进行签名计算
参与签名的字段包括 noncestr(随机字符串), 有效的 ticket, timestamp(时间戳,秒级别,类型为 String)
例如:
参数 | 示例 |
---|---|
nonce_str | Wm3WZYTPz0wzccnW |
ticket | @ml6sqYBGgTKmQNajnKNkaj8yksCAY++adIhlGIqfTiKyvBqOIkzdJ6WRgP+nO+wtVItqKbX4iZ+mFIYkyPJjpQ== |
timestamp | 1650941858 |
对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 string1:
nonce_str=Wm3WZYTPz0wzccnW&ticket=@ml6sqYBGgTKmQNajnKNkaj8yksCAY++adIhlGIqfTiKyvBqOIkzdJ6WRgP+nO+wtVItqKbX4iZ+mFIYkyPJjpQ==×tamp=1650941858
对 string1 进行 MD5 签名,得到 signature:e9e2aa8136260a22b0b09fdee43ccb8a。