php自定义加密函数、解密
封面图
•
2025-10-12
•
PHP
157
0
0
0
在 PHP 中,你可以通过自定义加密函数来实现简单的数据加密和解密。以下是一个**基于 XOR 加密算法**的简单示例(适用于学习或低安全要求的场景)。如果你需要更安全的加密方式,建议使用 `openssl` 扩展。 --- ## 🔐 一、XOR 加密(简单示例) ### ✅ 加密函数 ```php function xorEncrypt($data, $key) { $result = ''; for ($i = 0; $i < strlen($data); $i++) { $result .= $data[$i] ^ $key[$i % strlen($key)]; } return base64_encode($result); } ``` ### ✅ 解密函数 ```php function xorDecrypt($data, $key) { $data = base64_decode($data); $result = ''; for ($i = 0; $i < strlen($data); $i++) { $result .= $data[$i] ^ $key[$i % strlen($key)]; } return $result; } ``` ### 📌 使用示例 ```php $key = 'mySecretKey123'; $original = "Hello, this is a secret message."; $encrypted = xorEncrypt($original, $key); $decrypted = xorDecrypt($encrypted, $key); echo "Original: " . $original . "\n"; echo "Encrypted: " . $encrypted . "\n"; echo "Decrypted: " . $decrypted . "\n"; ``` --- ## 🔒 二、使用 OpenSSL 实现更安全的加密(推荐) 如果你需要**更安全的加密方式**,可以使用 `openssl` 扩展。以下是一个 AES-256-CBC 的加密/解密示例: ### ✅ 加密函数 ```php function opensslEncrypt($data, $key, $iv) { $method = 'AES-256-CBC'; $options = OPENSSL_RAW_DATA; $encrypted = openssl_encrypt($data, $method, $key, $options, $iv); return base64_encode($encrypted); } ``` ### ✅ 解密函数 ```php function opensslDecrypt($data, $key, $iv) { $data = base64_decode($data); $method = 'AES-256-CBC'; $options = OPENSSL_RAW_DATA; $decrypted = openssl_decrypt($data, $method, $key, $options, $iv); return $decrypted; } ``` ### 📌 使用示例 ```php $key = '12345678901234567890123456789012'; // 32 字节 $iv = '1234567890123456'; // 16 字节 $original = "This is a secure message."; $encrypted = opensslEncrypt($original, $key, $iv); $decrypted = opensslDecrypt($encrypted, $key, $iv); echo "Original: " . $original . "\n"; echo "Encrypted: " . $encrypted . "\n"; echo "Decrypted: " . $decrypted . "\n"; ``` --- ## ⚠️ 注意事项 | 项目 | 说明 | |------|------| | XOR 加密 | 简单但不安全,适合教学或非敏感数据 | | OpenSSL 加密 | 安全性高,适合生产环境 | | 密钥管理 | 密钥应保密,不能硬编码在代码中 | | IV(初始化向量) | 对于 CBC 模式,IV 应随机生成并随加密数据一起传输 | --- ## ✅ 总结 - **简单加密**:用 XOR 或 MD5 + 自定义逻辑(不推荐用于安全场景) - **安全加密**:使用 `openssl` 扩展(如 AES-256-CBC) - **密钥与 IV**:务必妥善管理 如果你有特定需求(如对称加密、非对称加密、哈希等),欢迎告诉我,我可以提供更详细的方案。
上一篇:
PHP使用Redis长连接的方法详解
下一篇:
php字符串常用算法--字符串加密解密
标题录入,一次不能超过6条
返回顶部
留言
留言
评论