3

我正在尝试使用 rijndael(密钥大小 256 位,块大小 256 位,CFB 模式)加密字符串,目前我正在做这样的事情:

BufferedBlockCipher c = new BufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256), 256));
    c.init(false, new ParametersWithIV(new KeyParameter(keybytes), iv));

我可以很好地加密和解密我自己的东西。不幸的是,我必须解密的字符串来自 php 中的 mcrypt。

我无法解密这个字符串,我猜失败就在我这边。谁能给我一个示例如何使用所需参数配置密码?

编辑:

在此处和 php 文档注释中遵循一些建议。我将密码更改为:

PaddedBufferedBlockCipher c = new PaddedBufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256)), new ZeroBytePadding());

加密仍然不兼容。

编辑 2

让它在CBC模式下工作。我想问题出在iv中的某个地方。

4

1 回答 1

3
PaddedBufferedBlockCipher c = new PaddedBufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256), 8), new ZeroBytePadding());
c.init(false, new ParametersWithIV(new KeyParameter(keybytes), iv));

这成功了。所有示例和教程都说 CFBBlockCipher 对象的第二个参数是 chiffre 的块大小,这将起作用,但 mcrypt 为 CFB 使用 8 位的块大小。

于 2011-11-14T13:00:12.863 回答