V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
vainly
V2EX  ›  问与答

请教一下,七牛关于 token 解密的问题

  •  
  •   vainly · 2017-10-18 18:56:37 +08:00 · 2390 次点击
    这是一个创建于 2380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Credentials.prototype.sign = function(data) {
    	var digest = util.hmacSha1(data, this.secretKey);
    	var sageDigest = util.base64ToUrlSafe(digest);
    	return this.accessKey + ":" + sageDigest;
    
    }
    

    这是七牛 node 中对请求参数生成 token 的方法,使用的是 hmacsha1 非对称混淆,但是这个 token 传到七牛后台的话,七牛是如何从 token 中获取参数的呢?又如何进行 token 校验的呢?

    4 条回复    2017-10-19 10:04:02 +08:00
    kslr
        1
    kslr  
       2017-10-18 19:56:00 +08:00 via Android   ❤️ 1
    除了 token 还有参数吧,把参数生成 token 对比不就可以了
    vainly
        2
    vainly  
    OP
       2017-10-18 22:25:32 +08:00
    @kslr 但是 token 中有 now time,每次生成的时候 token 都会不一样,到服务怎么对比呢?
    lcorange
        3
    lcorange  
       2017-10-18 22:50:45 +08:00   ❤️ 1
    我看了下官方的 api 文档,不知道是不是你用的,其中 token 最后生成是三个变量拼一起,如下
    uploadToken = AccessKey + ':' + encodedSign + ':' + encodedPutPolicy

    其中 encodedSign = urlsafe_base64_encode(sign) ,这个函数中,sign 由如下函数生成
    sign = hmac_sha1(encodedPutPolicy, "<SecretKey>")

    也就是说 encodedSign = urlsafe_base64_encode(hmac_sha1(encodedPutPolicy, "<SecretKey>"))

    在这里 encodedPutPolicy 作为 token 的第三部分传了过去,SecretKey 显然七牛官方也是知道的。所以完全可以重新执行一遍加密流程,来校验是否正确

    参照官网文档如下
    上传文件 api https://developer.qiniu.com/kodo/api/1312/upload
    token 构造策略 https://developer.qiniu.com/kodo/manual/1208/upload-token
    vainly
        4
    vainly  
    OP
       2017-10-19 10:04:02 +08:00   ❤️ 1
    @lcorange 谢谢仁兄,我看的是七牛推流的 sdk,最后生成地址的时候没注意把参数也携带在 rtmp url 后面,是可以重新之心加密流程的。谢谢你。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3141 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:57 · PVG 22:57 · LAX 07:57 · JFK 10:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.