使用PHP实现对称加密可采用三种方法:1、推荐使用openssl_encrypt和openssl_decrypt配合AES-256-CBC算法,生成32字节密钥和16字节IV,加密后用base64_encode编码,解密时逆向操作;2、旧系统中可能使用mcrypt扩展进行DES加密,需启用mcrypt_module_open、mcrypt_generic_init等函数并手动处理PKCS#7填充;3、现代应用应优先选用Sodium库,通过sodium_crypto_secretbox和sodium_crypto_secretbox_open实现,需生成32字节密钥和唯一24字节nonce以确保安全。

如果您需要在PHP中实现数据的加密与解密,并确保只有持有密钥的一方能够还原原始信息,可以使用PHP内置的对称加密函数。以下是几种利用PHP内置功能完成对称加密解密的操作方法:
openssl_encrypt 和 openssl_decrypt 是 PHP 中最常用的对称加密函数,支持多种加密算法,如 AES-128-CBC、AES-256-CBC 等。该方式安全性高,适用于大多数业务场景。
1、选择一个安全的加密方法,例如 AES-256-CBC,并生成一个32字节长度的密钥和16字节的初始化向量(IV)。
2、调用 openssl_encrypt 函数对明文进行加密,传入参数包括明文、加密方法、密钥、以及通过 OPENSSL_RAW_DATA 选项返回原始数据。
立即学习“PHP免费学习笔记(深入)”;
3、将加密结果使用 base64_encode 编码为可传输的字符串格式。
4、解密时先用 base64_decode 解码密文,再调用 openssl_decrypt,传入相同的方法、密钥和 IV 即可还原原文。
尽管 mcrypt 扩展在 PHP 7.2 后已被移除,但在一些旧系统中仍可能遇到。若环境支持,可通过此方式实现简单的 DES 对称加密。
1、确认服务器已安装并启用 mcrypt 扩展,否则无法使用相关函数。
2、使用 mcrypt_module_open 初始化 DES 算法模块,指定加密模式如 CBC。
3、调用 mcrypt_generic_init 初始化加密句柄,传入密钥和 IV。
4、执行 mcrypt_generic 加密数据,然后使用 mdecrypt_generic 进行解密操作。
5、注意:输出需手动处理填充(PKCS#7),且最终结果应进行编码以便存储或传输。
PHP 7.2+ 内置了 libsodium 扩展,提供现代加密标准,其中 symmetric encryption 可通过 secretbox 实现安全通信。
1、生成一个随机的 32 字节密钥,可使用 random_bytes(32) 创建。
2、使用 sodium_crypto_secretbox 函数加密数据,该函数要求传入明文、nonce(24字节随机数)和密钥。
3、加密前需确保 nonce 每次唯一,避免重放攻击。
4、解密时使用 sodium_crypto_secretbox_open,若验证失败会返回 false,成功则返回原始明文。
以上就是php怎么对称加密解密_用PHP内置函数实现对称加密解密实战教程【技巧】的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号