php中怎么加密解密_用PHP多种加密算法实现加解密教程【技巧】

答案:PHP中常用加解密方式包括OpenSSL的AES加密、Mcrypt库的Rijndael算法(旧版)、基于异或与Base64的简单混淆、以及Hash_HMAC消息认证。1. 使用OpenSSL扩展进行AES-256-CBC加密,通过openssl_encrypt()加密和openssl_decrypt()解密,需使用安全密钥和每次随机生成的IV(如openssl_random_pseudo_bytes(16)),密文与IV可一起存储,密钥须保密;2. Mcrypt库支持MCRYPT_RIJNDAEL_128算法,通过mcrypt_get_iv_size()获取IV长度并用mcrypt_create_iv()生成,加密后建议base64_encode()编码,解密时需trim()填充字符,但该扩展已废弃不推荐新项目使用;3. 简单加解密可通过异或运算与Base64实现,适合非敏感数据混淆,但安全性弱且应避免硬编码密钥;4. Hash_HMAC使用hash_hmac(‘sha256’, $data, $key)生成带密钥的消息摘要,用于验证数据完整性,常见于API签名和Webhook校验,属单向加密不可逆。

php中怎么加密解密_用php多种加密算法实现加解密教程【技巧】

如果您需要在PHP中对敏感数据进行保护,可以通过加密算法将原始信息转换为不可读的形式,再通过解密还原数据。以下是几种常用的PHP加解密实现方式:

一、使用OpenSSL扩展进行AES加密解密

OpenSSL扩展提供了强大的加密功能,支持多种对称加密算法,其中AES是一种广泛使用的标准加密算法,安全性高且性能良好。

1、使用openssl_encrypt()函数对数据进行加密,指定加密方法为AES-256-CBC,并提供密钥和初始化向量(IV)。

2、使用openssl_decrypt()函数对密文进行解密,需确保密钥和IV与加密时一致。

立即学习PHP免费学习笔记(深入)”;

3、生成安全的随机IV可使用openssl_random_pseudo_bytes(16),并将其与密文一起存储或传输。

密钥必须保密,IV不需要保密但应每次加密都重新生成

二、使用Mcrypt库实现Rijndael加密(适用于旧版本PHP)

在PHP 7.1之前,Mcrypt扩展常用于实现块加密,虽然该扩展已被废弃,但在维护老项目时仍可能遇到。

1、确认服务器已安装Mcrypt扩展,选择MCRYPT_RIJNDAEL_128作为加密算法。

2、使用mcrypt_get_iv_size()获取IV长度,并通过mcrypt_create_iv()生成初始化向量。

3、调用mcrypt_encrypt()执行加密操作,返回二进制密文,建议使用base64_encode()编码便于存储。

4、解密时使用mcrypt_decrypt(),并用trim()去除填充字符。


ProfilePicture.AI

ProfilePicture.AI

在线创建自定义头像的工具

ProfilePicture.AI
73


查看详情
ProfilePicture.AI

此方法不推荐用于新项目,建议升级到OpenSSL

三、基于Base64与自定义密钥的简单加解密

对于非敏感场景,可以结合异或运算和Base64编码实现轻量级加解密逻辑,适合配置项或URL参数混淆。

1、编写encrypt()函数,将明文与密钥逐字节进行异或运算,结果经Base64编码输出。

2、编写decrypt()函数,先对输入进行Base64解码,再与相同密钥异或还原原文。

3、确保密钥长度足够,并避免在代码中硬编码明文密钥。

此类方法不具备强安全性,仅适用于防止普通用户查看数据

四、使用Hash_HMAC生成带密钥的消息摘要(单向加密)

当只需要验证数据完整性而无需解密时,可采用HMAC机制,它结合哈希算法与密钥生成签名。

1、使用hash_hmac()函数,选择sha256作为哈希算法,传入原始数据和私有密钥。

2、接收方使用相同密钥重新计算HMAC值,并与接收到的签名比对以验证真实性。

3、常见应用场景包括API请求签名、Webhook验证等。

HMAC是单向过程,无法还原原始数据

以上就是php中怎么加密解密_用PHP多种加密算法实现加解密教程【技巧】的详细内容,更多请关注php中文网其它相关文章!

https://www.php.cn/faq/1814102.html

发表回复

Your email address will not be published. Required fields are marked *