php怎么使用key加密解密

原创
admin 1个月前 (08-14) 阅读数 56 #PHP
文章标签 PHP

PHP中使用Key进行加密和解密的方法

PHP中,有多种行为可以使用密钥(Key)来加密和解密数据。下面将介绍几种常用的方法。

1. 使用mcrypt扩展

mcrypt是一个PHP的扩展,提供了多种加密算法。以下是一个使用mcrypt和AES算法进行加密解密的例子:

// 加密

function encrypt($data, $key) {

$cipher = mcrypt_module_open('rijndael-128', '', 'cbc', '');

$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($cipher), MCRYPT_RAND);

mcrypt_generic_init($cipher, $key, $iv);

$encrypted = mcrypt_generic($cipher, $data);

mcrypt_generic_deinit($cipher);

return base64_encode($iv . $encrypted);

}

// 解密

function decrypt($data, $key) {

$data = base64_decode($data);

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);

$iv = substr($data, 0, $iv_size);

$data = substr($data, $iv_size);

$cipher = mcrypt_module_open('rijndael-128', '', 'cbc', '');

mcrypt_generic_init($cipher, $key, $iv);

$decrypted = mdecrypt_generic($cipher, $data);

mcrypt_generic_deinit($cipher);

return trim($decrypted);

}

注意:mcrypt扩展已在PHP 7.1.0中被废弃,并在PHP 7.2.0中被移除。所以,建议使用其他现代的加密库。

2. 使用OpenSSL扩展

OpenSSL是另一个有力的加密库,它拥护多种加密算法。以下是一个使用OpenSSL和AES算法进行加密解密的例子:

// 加密

function encryptWithOpenSSL($data, $key) {

$method = 'AES-256-CBC';

$ivLength = openssl_cipher_iv_length($method);

$iv = openssl_random_pseudo_bytes($ivLength);

$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);

return base64_encode($iv . $encrypted);

}

// 解密

function decryptWithOpenSSL($data, $key) {

$data = base64_decode($data);

$method = 'AES-256-CBC';

$ivLength = openssl_cipher_iv_length($method);

$iv = substr($data, 0, $ivLength);

$data = substr($data, $ivLength);

return openssl_decrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);

}

3. 使用defuse/php-encryption库

defuse/php-encryption是一个现代的、可靠的PHP加密库,它提供了单纯易用的API。你可以通过Composer安装这个库,然后使用它进行加密和解密:

// 安装

composer require defuse/php-encryption

// 加密

use Defuse\Crypto\Key;

use Defuse\Crypto\Crypto;

$key = Key::createNewRandomKey();

$encrypted = Crypto::encrypt($data, $key, true);

// 解密

$decrypted = Crypto::decrypt($encrypted, $key, true);

以上就是在PHP中使用Key进行加密和解密的几种常用方法。在实际应用中,请采取你的需求和环境选择合适的加密库和算法。同时,确保你的密钥可靠,不要泄露给未经授权的人员。


本文由IT视界版权所有,禁止未经同意的情况下转发

热门