TwoFish上维基百科页面指向这个C中的参考实现 (和代码),这很好,但是它缺少一个main,而我在实现它时的最初几次测试没有正确地处理我尝试的任何“已知向量”测试用例。我怀疑我正在研究一个没有正确使用API的问题,但是我不知道从哪里开始查找错误。我不想在那件事上大惊小怪,我宁愿从一个代码库开始:
我对C或C类C++代码也有很强的偏好。
注意:在这一点上,我对代码的可读性比其他任何东西都更感兴趣。可以加密和解密单个块的小而简单的代码以及硬编码一个或三个调用的主要功能将是理想的。除此之外的大多数东西(像任何用户界面)都只是我的用例的噪音。
另外,任何有更多限制的许可,对我来说都是有用的,因为我知道好的价值观和与之相比较的状态。
发布于 2012-01-19 19:32:11
我最终找到了从上面列出的C实现派生出来的这个Python实现。我的问题的根本原因是关键的话顺序不对。
发布于 2012-08-29 21:40:12
我采用了Twofish的设计者Neils弗格森的一个实现,并在C++中包装了它(非常轻,做了很少的更改),而且效果很好。我必须强调,我在这里几乎没有做过任何工作,也不要声称理解Twofish是如何工作的(这是在阅读了它之后--但这对我来说太难了)。
构造函数进行全面测试,如果测试失败,则中止测试,因此,一旦有了完整构造的对象,您就知道它会正常工作。
我把消息来源放在这里:https://www.cartotype.com/assets/downloads/twofish/。
文件中有各种可配置的东西;您可能想要更改的一个是中止函数Twofish_fatal,在我的版本中,它试图写到地址0以强制退出,但在某些平台上不起作用。
与上面提到的代码一样,所有这些都是编码单个16字节块(ECB =电子代码簿模式)。但是在上面实现一种更好的模式是非常容易的,比如密码块链接,其中每个纯文本块在加密之前都是XORed与前一个密码文本块(第一个块使用16个字节的随机“初始化向量”,并将其与加密数据一起传输)。
另一个实现可以在Bruce的开源密码数据库程序的源代码中找到,PasswordSafe:相关的源代码在这里:http://passwordsafe.git.sourceforge.net/git/gitweb.cgi?p=passwordsafe/pwsafe.git;a=tree;f=pwsafe/pwsafe/src/core;hb=HEAD。我还没有试过它,所以我不能评论它是多么容易集成。
发布于 2012-01-17 02:03:47
cryptcat包在Ubuntu和Debian上提供了一个带有双重内置的nc(1)-like功能。
源包中的twofish2.cc和twofish2.h提供了双重支持。farm9crypt.cc提供了一个介于C样式read()和write()功能与双重算法之间的层--它是一种我称之为C类C++的样式。
https://stackoverflow.com/questions/8888737
复制相似问题