使用万象优图过程中如何生成正确的鉴权签名?

  • 回答 (4)
  • 关注 (0)
  • 查看 (266)

这是我参照的生成鉴权签名的文档:https://cloud.tencent.com/document/product/460/6968

我不明白的是其中将原始的拼接的签名串进行hmac-sha1加密,秘钥为secretKey,后生成的byte[]如何再和原始的签名串再进行一次拼接,进行base64编码。是加密过后转16进制的字符串再拼接还是怎么样?我始终无法得到正确的结果,求各位路来路往的好心人示范一下

用户1499351用户1499351提问于
akjok54stay hungry stay foolish回答于

先使用对应参数进行拼接

拼接格式如下:

拼接多次有效签名串:

a=[appid]&b=[bucket]&k=[SecretID]&e=[expiredTime]&t=[currentTime]&r=[rand]&u=[userid]&f=[fileid]

拼接单次有效签名串:

a=[appid]&b=[bucket]&k=[SecretID]&e=[expiredTime]&t=[currentTime]&r=[rand]&u=[userid]&f=[fileid]

然后使用 HMAC-SHA1 算法对请求进行加密(SHA1 算法加密后的输出必须是原始的二进制数据,否则签名失败);签名串需要使用 Base64 编码。即生成签名的公式如下:

SignTmp = HMAC-SHA1(SecretKey, orignal)
Sign = Base64(SignTmp.orignal)

其中 SecretKey 为项目密钥 SecretKey,orignal 已拼接签名串 ,首先对 orignal 使用 HMAC-SHA1 算法进行签名,然后将 orignal 附加到签名结果的末尾,再进行 Base64 编码,得到最终的 sign。

注意: 此处使用的是标准的 Base64 编码,而不是 urlsafe 的 Base64 编码。

人生的旅途辣鸡前端回答于

文档说的很明白了,但是你为什么要转16进制的字符?建议写出你的加密过程

Dust资深服务器虚拟化工程师。回答于

SHA1 算法加密后的输出必须是原始的二进制数据,否则签名失败。

军哥

重庆雷驰信息技术有限公司 · 经理 (已认证)

老司机开车啦...回答于

扫码关注云+社区

领取腾讯云代金券