如何使用 Rijndael 和 256 位块大小进行加密或解密?
由于某些原因,我需要使用 256 位块大小来实现 Rijndael 解/压缩,而不是使用 128 位块大小的 AES(原因:使用 Rijndael 在 PHP 中对数据进行加密...)。
如何更改密码的块大小?
如果我只是得到一个带有 "RIJNDAEL/CFB/PKCS5Padding"
的密码并尝试用 256 位初始化 IV,我会得到一个异常,因为块大小只有 128 位。
For certain reasons I need to implement Rijndael de/compression with a blocksize of 256 bits instead of AES which uses a block size of 128 bits (reason: data is encrypted in PHP using Rijndael...).
How can I change the block-size for a cipher?
If i just get a cipher with "RIJNDAEL/CFB/PKCS5Padding"
and try to initialize a IV with 256 bits I get an exception, because the block-size is only 128 bits.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了具有 128 位块大小的 Rijndael 之外,任何 Sun JCE 提供程序都不支持任何其他算法:这是 AES 算法。要获得 256 位块大小的 rijndael,您必须去其他地方。我建议使用 Bouncycastle java 库。 RijndaelEngine 类有一个构造函数接受以位为单位的块大小。大多数人都会找到 PlatedBufferedBlockCipher 类与合适的填充物一起使用时会更方便,例如
There is no support in any of the Sun JCE providers for anything other than Rijndael with the 128-bit blocksize: this is the AES algorithm. To get rijndael with the 256-bit blocksize you will have to go somewhere else. I suggest the Bouncycastle java library. The RijndaelEngine class has a constructor that accepts a block size in bits. Most people find the PaddedBufferedBlockCipher class to be more convenient when used with suitable padding, e.g.
请注意,PHP mcrypt 使用零字节填充,因此应使用
new ZeroBytePadding()
而不是new PKCS7Padding()
。下面是使用 CBC 和 RIJNDAEL 256 的完整实现。
使用 CFB 时,
PlatedBufferedBlockCipher
应替换为以下内容:用法:
Note that PHP mcrypt uses Zero Byte padding so
new ZeroBytePadding()
should be used instead ofnew PKCS7Padding()
.Bellow a full implementation using
CBC
andRIJNDAEL 256
.When using CFB,
PaddedBufferedBlockCipher
should be replace by the following:Usage: