我正在尝试使用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。
答案 0 :(得分:2)
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位的块大小。