PHP 中有很多加密和解密的函数可用,以下是一些常用的加密解密方式和函数:

对称加密:

对称加密是一种加密方式,使用同一个密钥加密和解密数据。PHP 中可用的对称加密算法包括 AES、DES、3DES 等。以下是一些常用的对称加密函数:

mcrypt_encrypt():加密数据

mcrypt_decrypt():解密数据

openssl_encrypt():加密数据

openssl_decrypt():解密数据

非对称加密:

非对称加密使用一对公钥和私钥来加密和解密数据,其中公钥可以公开,而私钥必须保密。PHP 中可用的非对称加密算法包括 RSA、DSA、ECDSA 等。以下是一些常用的非对称加密函数:

openssl_public_encrypt():使用公钥加密数据

openssl_private_decrypt():使用私钥解密数据

openssl_private_encrypt():使用私钥加密数据

openssl_public_decrypt():使用公钥解密数据

Hash:

Hash 是一种单向加密方式,即不能通过已经加密的数据来还原出原始数据。PHP 中可用的 Hash 函数包括 MD5、SHA-1、SHA-256 等。以下是一些常用的 Hash 函数:

md5():计算 MD5 哈希值

sha1():计算 SHA-1 哈希值

hash():计算任意哈希值

Base64:

Base64 是一种编码方式,将二进制数据转换为文本格式,常用于在网络传输中传递二进制数据。PHP 中可用的 Base64 函数包括 base64_encode() 和 base64_decode()。

下面是一个简单的示例,使用 AES 对称加密算法加密和解密数据:

// 加密函数
function encrypt($plaintext, $key) {
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
return $ciphertext;
}

// 解密函数
function decrypt($encrypted, $key) {
$encrypted = base64_decode($encrypted);
$iv = substr($encrypted, 0, 16);
$encrypted = substr($encrypted, 16);
$decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}