是否有支持48位数据块的Blowfish算法的实现(Java/C++/Ruby)?我有一个加密问题,输入和输出通道正好是48位。网上的所有实现都适用于64位块。48位blowfish
回答
这是因为Blowfish具有64位的设置块大小。您可以将两个随机字节填充到数据的末尾。
require 'rubygems'
require 'crypt/blowfish'
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
plain="123456"
encryptedBlock = blowfish.encrypt_block(plain+(rand(250)+5).chr+(rand(250)+5).chr)
,或者如果你plain
可能小于6个字节/ 48位
encryptedBlock = blowfish.encrypt_block(plain.ljust(8))
你可以使用与河豚。请记住,永远不要重用任何反击价值。
只需选择一个计数器(它将需要在所有加密中使用相同的密钥是唯一的),将计数器填充到64位并加密填充的计数器。然后将这个加密的前48位与你的明文进行XOR以获得密文。重复密文操作进行解密。
唯一的问题是找到合适的计数器。如果将它与密文一起包含,则需要超过48位。也许你有一个会话ID或可以使用的东西?
块大小和模式是非常不同的。使用计数器模式不会解决问题。 – rook 2009-12-17 01:40:58
当然会。 Counter-mode将河豚转换为流密码,因此您可以将流的第一个48位和xor与纯文本相结合以获得密文(就像您使用RC4-drop所做的那样)在你的回答中)。 – 2009-12-17 06:32:24
我建议使用RC4-drop 1024.RC4是一种流密码,因此如果消息少于48bytes,则可以加密任意大小,然后可以用空值填充。丢弃1024意味着丢弃PRNG流的前1024个字节,为此,您可以在首次使用时加密1024个字节的垃圾。
BitTorrent的消息流加密使用RC4降1024,这里是使用ARC4库Python实现:
- 1. Javascript中的48位按位运算?
- 2. SVGPathData铬镀铬48 48
- 3. Blowfish和Blowfish-compat有什么区别?
- 4. PHP Blowfish加密
- 5. Blowfish objective-c implementation
- 6. 如何为位掩码创建48位uint
- 7. C中的Blowfish php?
- 8. MSSQL:从MD5到Blowfish
- 9. Blowfish Algo For a Image
- 10. 数学解:48
- 11. Blowfish密码 - 按位异或与P数组的密钥
- 12. 精度拖放48
- 13. BouncyCastle中的Blowfish ECB模式
- 14. 在android中的Blowfish加密
- 15. C++ Blowfish散列实现
- 16. 使用blowfish加密与Android?
- 17. C#中的Blowfish来自Java
- 18. 为什么48位种子在util随机类?
- 19. PyPNG读取48位,更改像素颜色,写入像素
- 20. 失败后48毫秒
- 21. 第48行语法错误
- 22. ArrayList中的整数由48
- 23. Highchart,CSV和48小时时间轴,显示过去48个时数据
- 24. Blowfish解密/动作脚本3(AS3Crypto)
- 25. phpMyAdmin中的blowfish秘诀是什么?
- 26. 在.NET中使用Blowfish加密
- 27. 如何在J2ME中实现Blowfish算法?
- 28. 哪个Blowfish算法最“正确”?
- 29. 在actionscript 3中的blowfish加密
- 30. 理解开源Blowfish API的问题
与添加额外的字节是生成的加密数据块将是64位的唯一问题。我不能截断它,而且这比我的数据通道可以支持的更多。 – 2009-12-07 12:43:31
我从来没有听说过48位块密码。我知道有32位,但这对你也没有帮助。是否有可能拆分64位块并将其作为2x48位发送? – 2009-12-07 15:00:48