全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
12
返回列表 发新帖
楼主: 斌斌

cf图床代码问题请教,签名

[复制链接]
 楼主| 发表于 2021-9-20 12:23:53 | 显示全部楼层
滴滴单车 发表于 2021-9-20 11:21
我没绑卡 所以没法测试 stringToSign 应该是不带域名和协议的 之前看漏了 现在改了 顺便将 sign 也给转小 ...

测试了,不一样,官方不是给worker例子了么,输入一样参数,两个结果不一样
 楼主| 发表于 2021-9-20 12:31:35 | 显示全部楼层
滴滴单车 发表于 2021-9-20 11:21
我没绑卡 所以没法测试 stringToSign 应该是不带域名和协议的 之前看漏了 现在改了 顺便将 sign 也给转小 ...

我运行官方的例子,输入对的密钥和网址,可以访问图片,所以把key 改成了111测试,时间啥的也固定写死和c#测试,得到的结果不一样,可能关键点是key 的处理不一样吧
发表于 2021-9-20 13:33:30 | 显示全部楼层
斌斌 发表于 2021-9-20 12:31
我运行官方的例子,输入对的密钥和网址,可以访问图片,所以把key 改成了111测试,时间啥的也固定写死和c ...

没实测还是太容易写Bug了 最后结果用了原 url 来拼 忘了给补上 exp 参数 sign 应该是没算错的 刚测试了下结果一样 也给修正回原楼层了
 楼主| 发表于 2021-9-20 15:12:05 | 显示全部楼层
滴滴单车 发表于 2021-9-20 13:33
没实测还是太容易写Bug了 最后结果用了原 url 来拼 忘了给补上 exp 参数 sign 应该是没算错的 刚测试了下 ...

return stringToSign + "&sig=" + sig;

不应该吧,我早就改成了这样。好像结果不一样。
 楼主| 发表于 2021-9-20 15:13:45 | 显示全部楼层
滴滴单车 发表于 2021-9-20 13:33
没实测还是太容易写Bug了 最后结果用了原 url 来拼 忘了给补上 exp 参数 sign 应该是没算错的 刚测试了下 ...


比如key是111
内容是https://imagedelivery.net/SzNV43bIOhJnWJ5Iz6Cvhg/932c3295-9ef0-43c0-45cf-082dd1d6ed01/public?exp=1632165833
加密后得到的值是1d160cf8c35752b652a3d5fc542634560e7a990091ea1073cd6fb42822f5a349。  就是正确的

但是我c# 得到的是4090da18a78252c31e4e43dbb89ec78e79a8d7db3199285ac1204c7043819eab


https://hostloc.com/forum.php?mo ... ;page=1#pid11015324
 楼主| 发表于 2021-9-20 15:19:28 | 显示全部楼层
滴滴单车 发表于 2021-9-20 13:33
没实测还是太容易写Bug了 最后结果用了原 url 来拼 忘了给补上 exp 参数 sign 应该是没算错的 刚测试了下 ...

Key好像是做了处理变成key了
如果都是 HMAC SHA256 的话,那代码不一样好像。就是不明白具体区别,咱这应该是没处理下面的代码
const key = await crypto.subtle.importKey(
    "raw",
    secretKeyData,
    { name: "HMAC", hash: "SHA-256" },
    false,
    ["sign"]
  );


 楼主| 发表于 2021-9-20 15:39:03 | 显示全部楼层
滴滴单车 发表于 2021-9-20 13:33
没实测还是太容易写Bug了 最后结果用了原 url 来拼 忘了给补上 exp 参数 sign 应该是没算错的 刚测试了下 ...

         下面代码没毛病吧。加密的就是不对呢。
   string url =  generateSignedUrl("https://imagedelivery.net/SzNV43bIOhJnWJ5Iz6Cvhg/932c3295-9ef0-43c0-45cf-082dd1d6ed01/public");


       static string generateSignedUrl(string url)
        {
        
        // var key = SHA256EncryptString(KEY);
          var key = System.Text.Encoding.UTF8.GetBytes(KEY);

              var hmac = new HMACSHA256(key);

             var expiry = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + EXPIRATION;
           
             var stringToSign = $"{url}?exp={expiry}";
           // var stringToSign = url;
            var mac = hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign));
             var sig = BitConverter.ToString(mac);
          sig = sig.Replace("-", "").ToLower();
            return stringToSign + "&sig=" + sig;
        }
发表于 2021-9-20 15:54:12 | 显示全部楼层
上次回复后的代码我没有任何改动 套用你另一个贴的示例 下面给个演示

https://dotnetfiddle.net/y27mOf
 楼主| 发表于 2021-9-20 16:06:06 | 显示全部楼层
滴滴单车 发表于 2021-9-20 15:54
上次回复后的代码我没有任何改动 套用你另一个贴的示例 下面给个演示

https://dotnetfiddle.net/y27mOf ...

发现问题了大佬,果然大佬。
我这句不一样                        var stringToSign = $"{new Uri(url).AbsolutePath}?exp={expiry}";

我用的全url弄的,您弄的AbsolutePath。所以不一样。真感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-6 06:52 , Processed in 0.061296 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表