Ubuntu 下 PHP 加密操作指南
在 Ubuntu 环境中,PHP 加密通常分为两类:一是对业务数据进行加密(如字段、文件、通信),二是对PHP 源代码进行加密/混淆(保护源码)。下面分别给出可落地的操作步骤与示例。
一、数据加密与解密
<?php
function encryptData($data, $key, $method = 'AES-256-CBC') {
$ivLen = openssl_cipher_iv_length($method);
$iv = openssl_random_pseudo_bytes($ivLen);
$enc = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $enc);
}
function decryptData($data, $key, $method = 'AES-256-CBC') {
$data = base64_decode($data);
$ivLen = openssl_cipher_iv_length($method);
$iv = substr($data, 0, $ivLen);
$enc = substr($data, $ivLen);
return openssl_decrypt($enc, $method, $key, OPENSSL_RAW_DATA, $iv);
}
// 使用示例
$key = '32-byte-secret-key-here-1234567890'; // 32 字节密钥(AES-256)
$msg = 'Hello, 世界';
$enc = encryptData($msg, $key);
$dec = decryptData($enc, $key);
echo "Enc: $enc\nDec: $dec\n";
要点:
二、启用与验证 OpenSSL 扩展
# 安装系统 OpenSSL 库与 PHP OpenSSL 扩展
sudo apt-get update
sudo apt-get install -y openssl php-openssl
# 确认扩展已加载
php -m | grep -i openssl
# 如使用 FPM,重启服务
sudo systemctl restart php8.1-fpm # 版本号按实际替换
# 如使用 Apache
sudo systemctl restart apache2
extension=openssl
<?php
var_dump(function_exists('openssl_encrypt'));
以上步骤适用于在 Ubuntu 上启用并使用 OpenSSL 扩展进行数据加解密。
三、PHP 源代码加密与混淆
# 示例:PHP 8.1,路径以实际为准
wget https://download.ioncube.com/loader_line/ioncube_loader_lin_8.1.so \
-O /usr/lib/php/20210902/ioncube_loader_lin_8.1.so
# 启用扩展(Debian/Ubuntu 常用 phpenmod)
sudo phpenmod -v 8.1 ioncube_loader
# 或手动在 php.ini 添加:
# zend_extension=/usr/lib/php/20210902/ioncube_loader_lin_8.1.so
sudo systemctl restart apache2 || sudo systemctl restart php8.1-fpm
四、进阶场景
phpize && ./configure && make && sudo make install,并在 php.ini 中启用扩展。该方案涉及较多编译细节,建议参考对应项目文档与版本匹配说明。