艺恩数据——返回值的生成方式

加密方式是:DES、ECB、key和iv都来自返回值截取

前言

网站:aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9Cb3hPZmZpY2UvQk8vWWVhci9pbmRleC5odG1s
接口:aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9BUEkvR2V0RGF0YS5hc2h4

供学习交流

服务器生成流程

按照js解密流程猜测加密流程如下:

注释:返回值拿到后,不能直接解密,在其中截取出八位字符作为key或iv后,将此片段删除,得到 —— 真实的数据加密后的初始密文(且流程没有对字符串最后一位做改变)

1、首先,将原始数据使用key和iv加密得到一段初始密文
在这里插入图片描述
2、假设最后一位数据为y(可取值0123456789abcdef)
在这里插入图片描述
3、我们要将y对应的十进制+9,假设为m(代码中的index),m的取值范围:[9,24]
即:m=y的十进制数+9
4、然后我们在[0,15]的位置(为什么是0到15,按照代码来看,这个索引是某个十六进制字符对应的十进制数)插入长度为8的片段key,假设插入位置为Q(代码中的index2)(Q∈[0,15])
在这里插入图片描述
5、还记得刚才的位置m吧?在m的位置将Q(Q是下标)对应的十六进制字符插入进去即可
在这里插入图片描述

生成key和iv的python代码

def handle(a, b, c):
    '''
    根据js算法改写的
    '''
    if b == 0:
        return a[c:]
    else:
        res = '' + a[0:b]
        res += a[b + c:]
        return res


def get_encodeData_key_iv(encode_data):
    '''key和iv是一样的'''

    index = int(encode_data[-1], 16) + 9  # 倒数第一个字符转为十进制+9,index就是文中的m
    index2 = int(encode_data[index], 16)  # index2就是Q
    encode_data = handle(encode_data, index, 1)#将m处的一个字符挖掉
    IV = encode_data[index2:index2 + 8]  # 选出八个字符当做iv和key
    encode_data = handle(encode_data, index2, 8)  # 把iv这八个字符删除掉
    return encode_data, IV, IV
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞得更高肥尾沙鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值