PHP,Java,Javascript之间的AES互操作性
我正在开发一个需要加密的HTTP API。 我曾尝试使用AES来获得Java,PHP和Javascript之间的兼容性,但到目前为止,我已经设法获得Java PHP,然后是Java Javascript,但不能同时获得PHP和Javascript。
有没有人有过实现这些语言之间的互操作性的经验?
任何建议将不胜感激。
谢谢
要使AES在不同系统中工作,您必须确保所有系统上的所有内容都相同。 这意味着不依赖系统默认值 – 系统之间的默认值可能不同。 您需要明确指定所有内容。
- 指定模式; 使用CBC或CTR。
- 指定IV。 您可以将其添加到密文。
- 指定填充; 对于AES使用PKCS7。
- 如果您的密钥是文本字符串,则指定用于将其转换为字节的字符编码。
- 如果您的明文是文本字符串,则指定用于将其转换为字节的字符编码。
AES是一种标准( 在此定义)。 无论您使用哪种编程语言,结果都必须相同。
从官方定义检查一些测试向量,或者 – 如果您已经实现了块操作模式 – 从这里查看 。
如果你的实现有不同的结果,它可能会工作,但它不会是AES ……
- 从套接字创建密码流时应用程序死锁
- java.security.NoSuchAlgorithmException:找不到任何支持AES / ECB / PKCS7PADDING的提供程序
- 没有正确加密和解密
- 使用C#进行AES加密和使用Java进行解密
- 解密由.NET的RijndaelManaged使用Java加密的字节
- 每条消息都需要Cipher.init()吗?
- Android加密“pad block corrupted”exception
- 基于AES-256密码的Java加密/解密
- ‘str = new String(bytes,“UTF8”)’和’bytes = str.getBytes(“UTF8”)’中的字节值不一样