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

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

  •  
  •   vainly · 2017-10-18 18:56:37 +08:00 · 1871 次点击
    这是一个创建于 779 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
        1
    kslr   2017-10-18 19:56:00 +08:00 via Android   ♥ 1
    除了 token 还有参数吧,把参数生成 token 对比不就可以了
        2
    vainly   2017-10-18 22:25:32 +08:00
    @kslr 但是 token 中有 now time,每次生成的时候 token 都会不一样,到服务怎么对比呢?
        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
        4
    vainly   2017-10-19 10:04:02 +08:00   ♥ 1
    @lcorange 谢谢仁兄,我看的是七牛推流的 sdk,最后生成地址的时候没注意把参数也携带在 rtmp url 后面,是可以重新之心加密流程的。谢谢你。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2142 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    ♥ Do have faith in what you're doing.