
本文演示如何用PHP实现与Java类似的AES加密解密功能。Java代码通常使用AES算法,包含加密和解密方法。PHP实现需要选择合适的函数并处理差异。
Java代码用KeyGenerator生成密钥,并通过SecretKeySpec用于Cipher对象。PHP可以使用openssl_encrypt和openssl_decrypt函数实现类似功能。但Java和PHP的密钥生成方式不同,PHP通常使用预设密钥或更安全的密钥生成方法。
Java代码的加密结果为十六进制字符串,解密需要将其转换为字节数组。PHP代码也需进行类似转换。此外,Java代码有完善的异常处理,PHP代码也应注意异常处理。
以下PHP代码实现了类似功能,使用AES-128-CBC模式,包含随机IV向量的生成和处理:
立即学习“PHP免费学习笔记(深入)”;
class AESUtil { private static $key = "test"; // 默认密钥 public static function encrypt($content, $key = null) { $key = $key ?? self::$key; $iv_size = openssl_cipher_iv_length('AES-128-CBC'); $iv = openssl_random_pseudo_bytes($iv_size); $encrypted = openssl_encrypt($content, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); return strtoupper(bin2hex($iv . $encrypted)); } public static function decrypt($content, $key = null) { $key = $key ?? self::$key; $data = hex2bin($content); $iv_size = openssl_cipher_iv_length('AES-128-CBC'); $iv = substr($data, 0, $iv_size); $encrypted = substr($data, $iv_size); return openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); }}// 使用示例$plaintext = "Hello, World!";$encrypted = AESUtil::encrypt($plaintext);$decrypted = AESUtil::decrypt($encrypted);echo "原文: " . $plaintext . PHP_EOL;echo "加密后: " . $encrypted . PHP_EOL;echo "解密后: " . $decrypted . PHP_EOL;
这段PHP代码使用openssl_encrypt和openssl_decrypt函数,以及AES-128-CBC模式。它处理了IV向量,确保与Java代码类似的加解密效果。 注意:实际应用中,密钥安全性至关重要,应使用更安全的密钥管理机制。 默认密钥“test”仅用于演示,切勿在生产环境中使用。
以上就是PHP如何实现与Java类似的AES加密解密功能?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/171081.html
微信扫一扫
支付宝扫一扫