使用AES算法在java中加密和在php中解密

使用AES算法在java中加密和在php中解密,java,php,encryption,Java,Php,Encryption,我需要使用AES算法在java中加密字符串,并在PHP中解密数据。我搜了这么多,但没有得到确切的答案 在一些帖子中,他们使用了填充。他们还谈到了关键尺寸 但是,我不知道键的大小和应该使用什么填充 因此,请帮助我张贴一些示例代码和解释,以便更好地理解 提前谢谢 密钥大小并不重要,任何可用大小都是安全的 AES是一种分组密码,这意味着输入必须是块大小的倍数:16字节。除非输入是始终否则将需要块大小填充的倍数 AES的标准填充为(有时称为PKCS#5)。问题是PHP和通常使用的mcrypt库,它不支持

我需要使用AES算法在java中加密字符串,并在PHP中解密数据。我搜了这么多,但没有得到确切的答案

在一些帖子中,他们使用了填充。他们还谈到了关键尺寸

但是,我不知道键的大小和应该使用什么填充

因此,请帮助我张贴一些示例代码和解释,以便更好地理解


提前谢谢

密钥大小并不重要,任何可用大小都是安全的

AES是一种分组密码,这意味着输入必须是块大小的倍数:16字节。除非输入是始终否则将需要块大小填充的倍数

AES的标准填充为(有时称为PKCS#5)。问题是PHP和通常使用的mcrypt库,它不支持PKCS#7填充,只支持空填充,不能用于二进制数据。bozo维护人员拒绝添加PKCS#7填充。如果使用mcrypt,则必须添加自己的PKCS#7填充支持,这并不难,通常需要三行代码

但还有更多的问题。加密模式和CBC模式需要一个iv,它应该是随机数据。用于确定解密数据是否正确的身份验证。键不应该是字符串,如果它是字符串,则应使用它派生具有函数(如PBKDF2)的键


我建议使用适用于Java、php和许多其他语言的。它提供了创建安全加密的所有必要元素,包括:AES-256加密、CBC模式、使用PBKDF2扩展密码、密码盐析、随机IV、加密然后哈希HMAC身份验证和版本控制。

欢迎使用SO。请添加一些到目前为止您已经尝试过的代码。您应该发布一些示例代码(或a)。包括你已经尝试过的,以及你到底被困在哪里。查看更多信息,谢谢@阿乔姆。伟大的链接,我会在未来使用它!我已经向mcrypt开发者提出了请求,他们只是被忽略了。直到最近,。直到2014年4月。“直到”FUD就到此为止。