【问题标题】:CBC decryption XOR confusion [duplicate]CBC解密XOR混淆[重复]
【发布时间】:2017-02-04 03:16:01
【问题描述】:

我正在尝试在 DES 中实现填充预言攻击。我对CBC解密过程的理解(或者至少我在课堂上被告知的)是这样的:

假设我们的密文只有两个块,C0 和 C1。解密过程然后与 C1 进行 C0 异或,然后解密。之后,oracle 检查填充并返回 True 或 False。

我的问题是关于异或,我不明白如何在 python 中对两个字符串值进行异或(我对这一切都很陌生)。

所以如果我有价值观:

C0 = 'f20bdba6ff29eed7'
C1 = '58b1ffb4210a580'

如何对两者进行异或运算,以便查看预言机是否返回正确的值?

编辑:我已经尝试过以下代码:how to do bitwise exclusive or of two strings in python?

但是我得到了一个看起来很奇怪的输出,这就是为什么我发布了一个单独的问题。任何帮助将不胜感激,谢谢

【问题讨论】:

标签: python cryptography xor padding-oracle-attack


【解决方案1】:

查看字符串,它看起来像是由hex 数字组成的字符串。先转换成int,执行XOR再转换成hex为:

>>> C0 = 'f20bdba6ff29eed7'
>>> C1 = '58b1ffb4210a580'
>>> str(hex(int(C0,16) ^ int(C1,16)))[2:]
'f780c45dbd394b57L'

我不确定 Oracle Padding Attack 是什么,但它是执行XOR 的方式。

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 2014-08-01
    • 2016-11-21
    • 2012-03-24
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    相关资源
    最近更新 更多