我似乎找不到这些差异的根源。我在这个在线解密工具中发现了这一点
http://www.tools4noobs.com/online_tools/decrypt/
我有一些加密的Blowfish数据,我正试图通过Python的PyCrypto模块解密这些数据。然而,问题是数据似乎是用" Blowfish -compat“加密的,因为这是通过在线工具解密它所需要的;我不能通过PyCrypto的模块解密它,我收集到它严格使用Blowfish解密(而不是Blowfish-compat,不管是什么)。
有没有可能通过Python以某种方式解密blowfish-compat?我不知道这两者之间的区别。
发布于 2012-07-11 06:38:17
问得好。它似乎是mcrypt/libmcrypt程序特有的东西。
我找不到任何文档,所以我查看了libmcrypt的源代码。它包含两个模块,一个用于blowfish,另一个用于blowfish-compat。当我看着它们时,我能看到的唯一的区别(警告:我是一名软件工程师,但不是密码专家)是字节顺序的逻辑被交换了(ifdef WORDS_BIGENDIAN被ifndef WORDS_BIGENDIAN取代-注意"n")。
所以我猜测它是用来解码在大端机器上编码的数据的,反之亦然。或者可能有一些约定,即代码应该遵循有关字节顺序的约定,但有些库打破了它,这就补偿了它。
更新啊哈!知道了这一点,在谷歌上搜索"blowfish-compat big-endian“,结果看起来像是确认的结果。参见http://www.spinics.net/lists/crypto/msg00175.html -它讨论了一个颠倒了顺序的错误实现。
因此,简而言之,您的数据编码不正确。"compat“模式会重现bug,以便对其进行解码。
鉴于此,看起来您在python方面运气不佳,除非您能找到一个用于mcrypt的python接口。http://labix.org/python-mcrypt看起来可以工作(pypi page - http://pypi.python.org/pypi/python-mcrypt)。
(这是很长时间以来提供的最有趣的答案之一:o)
哦,我是通过点击download按钮下的“浏览所有文件”链接从http://sourceforge.net/projects/mcrypt/获得源码的(这个按钮下载的是mcrypt,而不是libmcrypt)。
https://stackoverflow.com/questions/11422497
复制相似问题