May 12

k3cloud接口的加密算法 不指定

bkkkd , 09:59 , 有感而发 , 评论(0) , 引用(0) , 阅读(1595) , Via 本站原创 | |
知识储备,目前公司使用了k3cloud,但接口提供的接口实在是有点少.所以在考虑是不是可以通用使用界面的接口.来完成功能.

但查看返回来的数据是这样的

H4sIAAAAAAAEAA3JOwrAIBAFwLu8egshkMJzpBOLNVmI4Cfomka8ezLtuAk+NdZSOAssuugRs9ShIDzcOHdYN/FyGv9vuzEEKRySXLDahhBu4RaE9W9jll80l/8ABPfqSlgAAAA=


这明显是一个base64的数据.但尝试解析出来是字节内容来的.然后查看源来.找到了doPostAsync()方法,里的的算法大概是这样的

this.doPostAsync(e.url, t, e){
  d = KD.utf8Decode(KD.decompress(a){
    t = new JXG.Util.Unzip(JXG.Util.Base64.decodeAsArray(e)).unzip()[0][0]
  }){
    var t, i, a, n, o, r;
    for (t = "", a = e.length, i = 0; a > i;) switch (n = e.charCodeAt(i++), n >> 4) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
        t += e.charAt(i - 1);
        break;
    case 12:
    case 13:
        o = e.charCodeAt(i++),
        t += String.fromCharCode((31 & n) << 6 &#124; 63 & o);
        break;
    case 14:
        o = e.charCodeAt(i++),
        r = e.charCodeAt(i++),
        t += String.fromCharCode((15 & n) << 12 &#124; (63 & o) << 6 &#124; (63 & r) << 0)
    }
    return t
  }
}


上面的是伪代码.只是显示了使用的算法主要是:unzip+base64
然后尝试使用php来解压

$string= 'H4sIAAAAAAAEAA3JOwrAIBAFwLu8egshkMJzpBOLNVmI4Cfomka8ezLtuAk+NdZSOAssuugRs9ShIDzcOHdYN/FyGv9vuzEEKRySXLDahhBu4RaE9W9jll80l/8ABPfqSlgAAAA=';
$base64_str = base64_decode($string);
var_dump(gzdecode ($base64_str));

输出的结果
引用
string(88) "[{"actionname":"setTimeout","params":[{"value":3600,"enabled":true,"hearbeat":300}]},{}]"
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]