欢迎访问宙启技术站
智能推送

如何使用PHP实现加密解密

发布时间:2023-07-07 20:43:27

PHP提供了多种加密解密算法,可以用于保护敏感信息的安全传输和存储。下面将以常用的对称加密算法AES和非对称加密算法RSA为例,介绍如何使用PHP实现加密解密。

1. 对称加密算法AES

对称加密算法使用相同的密钥进行加密和解密,常用的对称加密算法有AES、DES等。下面演示如何使用PHP实现AES加密解密。

a. 加密

function aes_encrypt($data, $key) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($iv.$encrypted);
}

$key = '1234567890123456';
$data = 'Hello, World!';
$encryptedData = aes_encrypt($data, $key);

echo 'Encrypted Data: '.$encryptedData;

b. 解密

function aes_decrypt($encryptedData, $key) {
    $data = base64_decode($encryptedData);
    $iv = substr($data, 0, 16);
    $data = substr($data, 16);
    return openssl_decrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
}

$decryptedData = aes_decrypt($encryptedData, $key);

echo 'Decrypted Data: '.$decryptedData;

2. 非对称加密算法RSA

非对称加密算法使用公钥加密,私钥解密。常用的非对称加密算法有RSA、DSA等。下面演示如何使用PHP实现RSA加密解密。

a. 生成公私钥对

$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);

$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privateKey);
$publicKey = openssl_pkey_get_details($res)['key'];

echo 'Private Key: '.$privateKey;
echo 'Public Key: '.$publicKey;

b. 加密

function rsa_encrypt($data, $publicKey) {
    openssl_public_encrypt($data, $encrypted, $publicKey);
    return base64_encode($encrypted);
}

$data = 'Hello, World!';
$encryptedData = rsa_encrypt($data, $publicKey);

echo 'Encrypted Data: '.$encryptedData;

c. 解密

function rsa_decrypt($encryptedData, $privateKey) {
    $encryptedData = base64_decode($encryptedData);
    openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
    return $decrypted;
}

$decryptedData = rsa_decrypt($encryptedData, $privateKey);

echo 'Decrypted Data: '.$decryptedData;

以上是使用PHP实现加密解密的基本示例。在实际应用中,需要注意密钥的安全保管和传递,以及加解密算法的选择和参数配置。另外,还可以使用其他加密库或扩展来增强加密解密功能,如Mcrypt、OpenSSL扩展等。