首页
社区
课程
招聘
未解决 [求助]AES中S盒被修改过了,如何推导出逆S盒
发表于: 2021-3-11 16:36 6056

未解决 [求助]AES中S盒被修改过了,如何推导出逆S盒

2021-3-11 16:36
6056

一个程序,里边确定是AES加密,仅有加密函数,他的S盒被替换过了,那么如何求出逆S盒呢?

修改过的S盒如下

static const unsigned char sbox[256] = {
0x90,0x7A,0x50,0xEF,0xF0,0x9C,0x2F,0x7D,0xA0,0x34,0x23,0xCA,0x4F,0x21,0x66,0x6B,
0x3D,0xE0,0xC2,0xB3,0xFC,0x69,0x08,0xFF,0x7F,0x16,0x48,0xD5,0xEB,0x59,0xD8,0x0C,
0xF3,0xE4,0xA8,0xEA,0xB9,0x81,0x01,0x28,0x13,0xB8,0x6C,0xCB,0xDC,0x8A,0x27,0x19,
0xD2,0xA4,0xD3,0x99,0x49,0x57,0x87,0xDF,0x2D,0x4A,0xC1,0x58,0xB4,0x68,0xDE,0xC7,
0x94,0x7B,0xAA,0xE2,0x8C,0x53,0xAD,0x1E,0x04,0xC5,0x18,0x00,0xED,0xF1,0x79,0x43,
0x51,0xB0,0x84,0x5A,0xEE,0x97,0x88,0x26,0xB6,0x73,0x9D,0x5B,0xFE,0xE5,0x54,0xF4,
0xB1,0x06,0x3F,0xBC,0x31,0x60,0xA1,0x85,0xC9,0xF8,0xC6,0xE7,0xAE,0xC3,0x82,0x9F,
0xFB,0xCE,0xFD,0x32,0x8D,0x2E,0x41,0xBF,0x37,0xB7,0xEC,0x77,0x02,0x80,0x3B,0x76,
0x92,0x14,0xD0,0x4C,0x38,0x89,0x1C,0x46,0x2B,0x0B,0xC4,0x72,0x0E,0xCD,0x62,0x10,
0x6F,0x09,0x8F,0x7C,0xD4,0xD7,0x6D,0xF7,0x9B,0xAC,0x20,0x12,0x64,0xDD,0xCC,0xFA,
0x70,0xF9,0x35,0x1D,0x9A,0x52,0xF5,0x0D,0xAF,0xBA,0xA6,0x30,0x29,0x8B,0x7E,0xC0,
0x83,0x95,0x61,0x44,0xA3,0x22,0x75,0x5E,0xA7,0x55,0x2A,0x91,0xF2,0x42,0xA2,0x56,
0xB5,0x5F,0xDB,0x36,0x47,0xBE,0x86,0xA5,0x40,0x15,0x5D,0x8E,0xBD,0xC8,0x1A,0xD1,
0x3C,0x07,0x11,0x33,0xBB,0x6E,0x9E,0x96,0x3A,0xDA,0x39,0x5C,0x2C,0x1F,0x17,0xE6,
0x25,0x6A,0x0A,0x3E,0x93,0xE9,0x74,0x65,0xAB,0x4D,0xCF,0xE8,0x78,0x0F,0xB2,0xE1,
0xF6,0x71,0x03,0xA9,0x1B,0xD6,0x63,0x4E,0xD9,0x24,0x98,0x67,0x45,0x05,0xE3,0x4B
};

根据大佬的思路已经解决了

new_s_box = [
0x90,0x7A,0x50,0xEF,0xF0,0x9C,0x2F,0x7D,0xA0,0x34,0x23,0xCA,0x4F,0x21,0x66,0x6B,
0x3D,0xE0,0xC2,0xB3,0xFC,0x69,0x08,0xFF,0x7F,0x16,0x48,0xD5,0xEB,0x59,0xD8,0x0C,
0xF3,0xE4,0xA8,0xEA,0xB9,0x81,0x01,0x28,0x13,0xB8,0x6C,0xCB,0xDC,0x8A,0x27,0x19,
0xD2,0xA4,0xD3,0x99,0x49,0x57,0x87,0xDF,0x2D,0x4A,0xC1,0x58,0xB4,0x68,0xDE,0xC7,
0x94,0x7B,0xAA,0xE2,0x8C,0x53,0xAD,0x1E,0x04,0xC5,0x18,0x00,0xED,0xF1,0x79,0x43,
0x51,0xB0,0x84,0x5A,0xEE,0x97,0x88,0x26,0xB6,0x73,0x9D,0x5B,0xFE,0xE5,0x54,0xF4,
0xB1,0x06,0x3F,0xBC,0x31,0x60,0xA1,0x85,0xC9,0xF8,0xC6,0xE7,0xAE,0xC3,0x82,0x9F,
0xFB,0xCE,0xFD,0x32,0x8D,0x2E,0x41,0xBF,0x37,0xB7,0xEC,0x77,0x02,0x80,0x3B,0x76,
0x92,0x14,0xD0,0x4C,0x38,0x89,0x1C,0x46,0x2B,0x0B,0xC4,0x72,0x0E,0xCD,0x62,0x10,
0x6F,0x09,0x8F,0x7C,0xD4,0xD7,0x6D,0xF7,0x9B,0xAC,0x20,0x12,0x64,0xDD,0xCC,0xFA,
0x70,0xF9,0x35,0x1D,0x9A,0x52,0xF5,0x0D,0xAF,0xBA,0xA6,0x30,0x29,0x8B,0x7E,0xC0,
0x83,0x95,0x61,0x44,0xA3,0x22,0x75,0x5E,0xA7,0x55,0x2A,0x91,0xF2,0x42,0xA2,0x56,
0xB5,0x5F,0xDB,0x36,0x47,0xBE,0x86,0xA5,0x40,0x15,0x5D,0x8E,0xBD,0xC8,0x1A,0xD1,
0x3C,0x07,0x11,0x33,0xBB,0x6E,0x9E,0x96,0x3A,0xDA,0x39,0x5C,0x2C,0x1F,0x17,0xE6,
0x25,0x6A,0x0A,0x3E,0x93,0xE9,0x74,0x65,0xAB,0x4D,0xCF,0xE8,0x78,0x0F,0xB2,0xE1,
0xF6,0x71,0x03,0xA9,0x1B,0xD6,0x63,0x4E,0xD9,0x24,0x98,0x67,0x45,0x05,0xE3,0x4B
]

new_contrary_sbox = [0]*256

for i in range(256):
    line = (new_s_box[i]&0xf0)>>4
    rol = new_s_box[i]&0xf
    new_contrary_sbox[(line*16)+rol] = i

print (new_contrary_sbox)



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-3-12 11:30 被yeyeyesO编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (15)
雪    币: 4516
活跃值: (4493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这是个难题. 坐等答案. 
2021-3-11 17:33
0
雪    币: 2413
活跃值: (6818)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
3
去网上找已存在的代码 
2021-3-11 18:15
0
雪    币: 622
活跃值: (2474)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
读源码 看原著 悟原理,要原原本本地学,全面、完整、准确地领会和掌握其中的精神实质。别人的理解代替不了自己的理解,每个人只有自己原原本本地把源码读通了,逐段逐句把原理搞清楚弄明白了,才能真正入心入脑,最终变成精神力量,化为实际解决问题的能力。想要学出东西,必须下真功夫。因此,在解决问题上一定要坚决抵制浮躁之风、抵制急功近利之风,始终强调原原本本地学,强调用功、用心。要拿出时间和精力,努力多学一点,学深一点,学透一点,思考得多一点,真正做到弄通弄懂、了然于胸、学深悟透。
2021-3-11 18:47
0
雪    币: 529
活跃值: (1015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
T1-4变没,最好给下原文件,方便坛友逆下,私发也行
2021-3-12 00:08
1
雪    币: 39
活跃值: (2951)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
AES加密与解密用的是同一个S盒,没有逆S盒一説。
2021-3-12 01:38
0
雪    币: 6349
活跃值: (2169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

首先要知道逆s盒和s盒是怎么用的,s盒的输入的高字节和低字节分别代表行号和列号,打个比方0x01输进s盒,那就取s盒的第0行第一列,按你贴出来的s盒得到的值就是0x7A
逆s盒的作用就是让上述过程可逆,也就是输入0x7A得到0x01,因此逆s盒的第7行第A列就是0x01。
写个脚本生成一下不难吧?

最后于 2021-3-12 09:12 被Bayerischen编辑 ,原因:
2021-3-12 09:11
4
雪    币: 529
活跃值: (1015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
fjqisba 去网上找已存在的代码 [em_33]

你找到了吗,应该极少

最后于 2021-3-12 10:05 被_air编辑 ,原因:
2021-3-12 10:04
0
雪    币: 529
活跃值: (1015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
卧槽老哥你是认真的,还是来搞笑的。。。怎么就没有逆S盒了????
2021-3-12 10:06
0
雪    币: 642
活跃值: (996)
能力值: ( LV5,RANK:72 )
在线值:
发帖
回帖
粉丝
10
Bayerischen 首先要知道逆s盒和s盒是怎么用的,s盒的输入的高字节和低字节分别代表行号和列号,打个比方0x01输进s盒,那就取s盒的第0行第一列,按你贴出来的s盒得到的值就是0x7A逆s盒的作用就是让上述过程可逆, ...
卧槽  师傅牛逼 还真是 解决了
2021-3-12 11:29
0
雪    币: 642
活跃值: (996)
能力值: ( LV5,RANK:72 )
在线值:
发帖
回帖
粉丝
11
_air T1-4变没,最好给下原文件,方便坛友逆下,私发也行
感觉大佬 已经解决了
2021-3-12 11:29
0
雪    币: 529
活跃值: (1015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
yeyeyesO 感觉大佬 已经解决了
这么简单的吗...楼主验证下没,我抽空试下
2021-3-12 11:59
0
雪    币: 642
活跃值: (996)
能力值: ( LV5,RANK:72 )
在线值:
发帖
回帖
粉丝
13
_air 这么简单的吗...楼主验证下没,我抽空试下
验证过了,能解密
2021-3-12 12:01
0
雪    币: 529
活跃值: (1015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
yeyeyesO 验证过了,能解密
牛批  学习了
2021-3-12 12:42
0
雪    币: 6548
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
s盒  : a -> b
逆s盒 : b -> a
其中 a, b的值的范围都在 0-255
比如你给的例子中 0x00 -> 0x90,  那么在逆s盒中 0x90处的值则为 0x00
不用考虑行号列号的,显得有点多余了
2021-5-13 10:25
1
雪    币: 642
活跃值: (996)
能力值: ( LV5,RANK:72 )
在线值:
发帖
回帖
粉丝
16
git_70880newdive s盒 : a -> b 逆s盒 : b -> a 其中 a, b的值的范围都在 0-255 比如你给的例子中 0x00 -> 0x90, 那么在逆s盒中 0x90处的值则为 ...
对啊  好像也是这个道理
2021-5-14 10:10
0
游客
登录 | 注册 方可回帖
返回
//