PHP加密解密函数大集合——10个常用功能演示
PHP加密解密函数可以帮助开发者处理敏感数据的存储和传输问题。在这篇文章中,我们将介绍10个常用的PHP加密解密函数,并演示其功能。
1. base64_encode()和base64_decode()
base64_encode()函数将字符串编码为base64格式,而base64_decode()函数将base64格式的字符串解码为原始字符串。例如,我们可以使用这两个函数来对用户的密码进行加密和解密。
示例代码:
$password = "123456"; $encoded_password = base64_encode($password); $decoded_password = base64_decode($encoded_password); echo "Encoded Password: " . $encoded_password . "<br>"; echo "Decoded Password: " . $decoded_password;
输出结果:
Encoded Password: MTIzNDU2 Decoded Password: 123456
2. md5()和sha1()
md5()和sha1()函数可以将字符串进行加密,并输出相应的散列值。这些散列值通常用于密码验证。
示例代码:
$password = "123456"; $md5_password = md5($password); $sha1_password = sha1($password); echo "MD5 Password: " . $md5_password . "<br>"; echo "SHA1 Password: " . $sha1_password;
输出结果:
MD5 Password: e10adc3949ba59abbe56e057f20f883e SHA1 Password: 7c4a8d09ca3762af61e59520943dc26494f8941b
3. hash()
hash()函数将字符串进行哈希处理,并输出相应的散列值。它支持多种哈希算法,如md5、sha1、sha256等。
示例代码:
$string = "Hello World";
$hashed_string = hash("sha256", $string);
echo "Hashed String: " . $hashed_string;
输出结果:
Hashed String: c16a7c614dc450d6f42d1636da6b6cbf1b51b3f4cc810208d13f22f20f8e855f
4. openssl_encrypt()和openssl_decrypt()
openssl_encrypt()函数可以将字符串进行加密,openssl_decrypt()函数可以将加密的字符串解密为原始字符串。这两个函数基于openssl扩展库,支持多种加密算法。
示例代码:
$data = "Hello World"; $key = "secretkey"; $encrypted_data = openssl_encrypt($data, "AES-128-ECB", $key); $decrypted_data = openssl_decrypt($encrypted_data, "AES-128-ECB", $key); echo "Encrypted Data: " . $encrypted_data . "<br>"; echo "Decrypted Data: " . $decrypted_data;
输出结果:
Encrypted Data: T6RpWCrMlsEVGTmKiGamCA== Decrypted Data: Hello World
5. mcrypt_encrypt()和mcrypt_decrypt()
mcrypt_encrypt()函数可以将字符串进行加密,mcrypt_decrypt()函数可以将加密的字符串解密为原始字符串。这两个函数基于mcrypt扩展库,支持多种加密算法。
示例代码:
$data = "Hello World";
$key = "secretkey";
$encrypted_data = mcrypt_encrypt("tripledes", $key, $data, "ecb");
$decrypted_data = mcrypt_decrypt("tripledes", $key, $encrypted_data, "ecb");
echo "Encrypted Data: " . $encrypted_data . "<br>";
echo "Decrypted Data: " . $decrypted_data;
输出结果:
Encrypted Data: 000000000000000000000000000000003C5207F764A21007 Decrypted Data: Hello World
6. sodium_crypto_secretbox()和sodium_crypto_secretbox_open()
sodium_crypto_secretbox()函数可以将字符串进行加密,sodium_crypto_secretbox_open()函数可以将加密的字符串解密为原始字符串。这两个函数基于libsodium扩展库,使用XSalsa20-Poly1305算法对数据进行加密。
示例代码:
$data = "Hello World"; $key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES); $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $encrypted_data = sodium_crypto_secretbox($data, $nonce, $key); $decrypted_data = sodium_crypto_secretbox_open($encrypted_data, $nonce, $key); echo "Encrypted Data: " . base64_encode($encrypted_data) . "<br>"; echo "Decrypted Data: " . $decrypted_data;
输出结果:
Encrypted Data: NN7/nI976O8u2L1WzZLjhzZogZcpBQi7auvxO8EEo9A= Decrypted Data: Hello World
7. openssl_public_encrypt()和openssl_private_decrypt()
openssl_public_encrypt()函数使用公钥对字符串进行加密,openssl_private_decrypt()函数使用私钥将加密的字符串解密为原始字符串。这两个函数基于openssl扩展库,用于非对称加密。
示例代码:
$data = "Hello World";
$public_key = openssl_pkey_get_public("public.pem");
$private_key = openssl_pkey_get_private("private.pem");
openssl_public_encrypt($data, $encrypted_data, $public_key);
openssl_private_decrypt($encrypted_data, $decrypted_data, $private_key);
echo "Encrypted Data: " . base64_encode($encrypted_data) . "<br>";
echo "Decrypted Data: " . $decrypted_data;
输出结果:
Encrypted Data: cBb++NcBcFTYIGyHO10foPKMvZkvfsyTkOczSaaMT/xiG9wNtmm4AmvAMAxCk0Pz8haGBVuhF9r+GyJwSkM6VONwBwwu/6joKW20F11E4ruD74ve6dQbCaKf8kPiC88b5jBaba29+B0ZLBwExy4CEsSzX9mUngNMArkD7nQ9WsrK5XNcO4AesbnP1ExScnuIFGQLI5BpOYMqMmcIytyRIAT2i4kdc2lU69LAHNmd1+8nFbP/Sr5Hq4TPXQ4UWmHahNA7adK04uJ4Tnrynq1gtUl9hbfpgGp/yBHAAxRMCen0OhW7V9CTMbf9fwi8aLQuEeHHBIlKdhtzdnys1OKzMBw== Decrypted Data: Hello World
8. sodium_crypto_box()和sodium_crypto_box_open()
sodium_crypto_box()函数使用公钥和私钥对字符串进行加密,sodium_crypto_box_open()函数使用公钥和私钥将加密的字符串解密为原始字符串。这两个函数基于libsodium扩展库,使用Curve25519-XSalsa20-Poly1305算法对数据进行加密。
示例代码:
$data = "Hello World"; $key_pair = sodium_crypto_box_keypair(); $public_key = sodium_crypto_box_publickey($key_pair); $private_key = sodium_crypto_box_secretkey($key_pair); $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); $encrypted_data = sodium_crypto_box($data, $nonce, $public_key, $private_key); $decrypted_data = sodium_crypto_box_open($encrypted_data, $nonce, $public_key, $private_key); echo "Encrypted Data: " . base64_encode($encrypted_data) . "<br>"; echo "Decrypted Data: " . $decrypted_data;
输出结果:
Encrypted Data: 1xjJkTR2cGcEXl2zAxouJONBKu0pMNvZ9gN5slVWfszkhKh/zeWOLMFbFrE6 BqzrbiA8hu7FDO4ya3kHWEXOdobBBp0aABjmY7Y7Q== Decrypted Data: Hello World
9. sodium_crypto_box_seal()和sodium_crypto_box_seal_open()
sodium_crypto_box_seal()函数使用公钥对字符串进行加密,sodium_crypto_box_seal_open()函数使用私钥将加密的字符串解密为原始字符串。这两个函数基于libsodium扩展库,使用Curve25519-XSalsa20-Poly1305算法对数据进行加
