我似乎找不到差异的来源。我在这个在线解密工具中发现了这个区别
http://www.tools4noobs.com/online_tools/decrypt/ http://www.tools4noobs.com/online_tools/decrypt/
我有一些加密的 Blowfish 数据,我正在尝试通过 Python 的 PyCrypto 模块解密它们。然而,问题是数据似乎是用“blowfish-compat”加密的,因为这就是通过在线工具解密它所需要的;我无法通过 PyCrypto 的模块解密它,而且我了解到它严格使用 Blowfish 解密(而不是 Blowfish 兼容的,无论是什么)。
是否有可能通过Python以某种方式解密blowfish-compat?我不知道两者之间的区别。
好问题。这似乎是 mcrypt/libmcrypt 程序特有的东西。
我找不到任何文档,所以我查看了 libmcrypt 的源代码。它包含两个模块,一个用于河豚,另一个用于河豚兼容。当我看到这些时,我能看到的唯一区别(警告:我是软件工程师,但不是加密专家)是字节顺序的逻辑被交换了(ifdef WORDS_BIGENDIAN
被替换为ifndef WORDS_BIGENDIAN
- 注意“n”)。
所以我的猜测是,它用于解码在小端机器上编码的大端机器上的数据,反之亦然。或者也许代码应该遵循一些关于字节顺序的约定,但有些库打破了它,这可以弥补。
update啊哈!知道这一点后,在谷歌上搜索“blowfish-compat big-endian”就会出现看起来像是确认的内容。看http://www.spinics.net/lists/crypto/msg00175.html http://www.spinics.net/lists/crypto/msg00175.html- 讨论了导致顺序颠倒的错误实现。
所以,简而言之,您的数据编码不正确。 “compat”模式会重现错误,以便可以对其进行解码。
鉴于此,看起来你在 python 方面运气不佳,除非你能找到 mcrypt 的 python 接口。http://labix.org/python-mcrypt http://labix.org/python-mcrypt看起来它可能有效(pypi 页面 -http://pypi.python.org/pypi/python-mcrypt http://pypi.python.org/pypi/python-mcrypt).
(这是很长一段时间以来提供的最有趣的答案之一:o)
哦,我的来源是http://sourceforge.net/projects/mcrypt/ http://sourceforge.net/projects/mcrypt/通过点击下载按钮下的“浏览所有文件”链接(该按钮下载 mcrypt,而不是 libmcrypt)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)