Location解密修正版

上一版本的解密算法有些问题,在某些情况下对不齐,容易解密失败。调试了一天的新算法,贴上来保存。也能帮助后来人:

QString Dialog::DecodeXiamiLocation(QString location)
{//解码虾米音乐凯撒矩阵算法
    if(!(location.data()[0].isDigit()))
        return "ERROR";
    int num=location.data()[0].digitValue();
    QString loc=location.mid(1,location.length()-1);
    int avg_len=loc.length()/num;
    int remainder=loc.length()%num;
    for(int i=0;i<num-remainder;i++)
        loc.insert((remainder*(avg_len+1)+avg_len*(i+1))+i,'~');
    int lineLen=loc.length()/num;
    QString ret;
    for(int j=0;j<lineLen;j++)
            for(int i=0;i<num;i++)
                ret.append(loc.at(i*lineLen+j));
    ret=QUrl::fromPercentEncoding(ret.remove('~').toLocal8Bit()).replace('^','0');
    return ret;
}

目前的半成品下载器预览图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值