补码:
补码计算法定义:非负数的补码是其原码本身;负数的补码是其绝对值的原码最高位符号位不变,其它位取反,再加1。
左移 右移 注意溢出
(a&0x3f) << 2
左移2位,与上0x3f 也就是 0011 1111 将最高两位置为0
同理右移2位 &0xfc 也就是 1111 1100 将最低两位置为0
算法特征
base 64特征点 base表, &0x3f 数据左移 ‘=’
res[i]=base64_table[str[j]>>2]; //取出第一个字符的前6位并找出对应的结果字符 res[i+1]=base64_table[(str[j]&0x3)<<4 | (str[j+1]>>4)]; //将第一个字符的后位与第二个字符的前4位进行组合并找到对应的结果字符
res[i+2]=base64_table[(str[j+1]&0xf)<<2 | (str[j+2]>>6)]; //将第二个字符的后4位与第三个字符的前2位组合并找出对应的结果字符
res[i+3]=base64_table[str[j+2]&0x3f]; //取出第三个字符的后6位并找出结果字符
SM4 异或^和循环左移<<<
TEA delta:通常为0x9e3779b9 4和5同时出现时要注意
XTEA delta:通常为0x9e3779b9
RC4 在初始化的过程中,密钥的主要功能是将S盒搅乱,对S盒一系列操作
识别重点:
2个长度为256的For循环
S盒乱序时的数据交换
以及最后的异或加解密
CRC16 异或上0x1021 用python爆破时要异或 0x11021