PHP提供了多种加密解密算法,包括对称加密算法和非对称加密算法。
对称加密算法使用同一个密钥进行加密和解密,常用的对称加密算法有DES、3DES、AES等。
以下是使用AES算法对数据进行加密和解密的示例代码:
php // 加密函数 function 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); } // 解密函数 function decrypt($data, $key) { $data = base64_decode($data); $iv = substr($data, 0, openssl_cipher_iv_length('aes-256-cbc')); $encrypted = substr($data, openssl_cipher_iv_length('aes-256-cbc')); return openssl_decrypt($encrypted, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); } // 使用示例 $data = 'Hello, world!'; $key = 'my_secret_key'; $encrypted_data = encrypt($data, $key); echo "加密后的数据:$encrypted_data\n"; $decrypted_data = decrypt($encrypted_data, $key); echo "解密后的数据:$decrypted_data\n";
非对称加密算法使用一对密钥进行加密和解密,其中一个是公钥,用于加密数据,另一个是私钥,用于解密数据。常用的非对称加密算法有RSA、DSA等。
以下是使用RSA算法对数据进行加密和解密的示例代码:
php // 生成密钥对 $key_pair = openssl_pkey_new(array( 'private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA )); openssl_pkey_export($key_pair, $private_key); $public_key = openssl_pkey_get_details($key_pair)['key']; // 加密函数 function encrypt($data, $public_key) { openssl_public_encrypt($data, $encrypted, $public_key); return base64_encode($encrypted); } // 解密函数 function decrypt($data, $private_key) { $data = base64_decode($data); openssl_private_decrypt($data, $decrypted, $private_key); return $decrypted; } // 使用示例 $data = 'Hello, world!'; $encrypted_data = encrypt($data, $public_key); echo "加密后的数据:$encrypted_data\n"; $decrypted_data = decrypt($encrypted_data, $private_key); echo "解密后的数据:$decrypted_data\n";
需要注意的是,使用非对称加密算法加密数据的速度较慢,一般用于加密较小的数据或者用于数据签名。