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

PHP加密解密函数大集合——10个常用功能演示

发布时间:2023-09-01 16:01:44

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算法对数据进行加