PHP加密和解密函数:哈希、加密、解密、验证
PHP提供了很多加密和解密函数来保护敏感信息。在本文中,我们将讨论哈希函数、对称加密函数、非对称加密函数以及验证函数。
哈希函数:
哈希函数是一种将任意长度的输入数据转换为固定长度输出的函数。这些输出值通常称为哈希值或散列值。PHP中常用的哈希函数有md5()和sha1()。
md5()函数可以将输入数据转换为128位的哈希值。例如,下面的代码将字符串"hello"转换为md5哈希值:
$hash = md5("hello");
echo $hash;
sha1()函数将输入数据转换为160位的哈希值。例如,下面的代码将字符串"hello"转换为sha1哈希值:
$hash = sha1("hello");
echo $hash;
注意,哈希函数是单向的,即无法从哈希值还原出原始数据。因此,哈希函数常被用于密码存储和验证。
对称加密函数:
对称加密函数使用相同的密钥进行加密和解密操作。常用的对称加密函数有openssl_encrypt()和openssl_decrypt()。
下面的代码演示了如何使用openssl_encrypt()函数将字符串"hello"进行对称加密,并使用openssl_decrypt()函数进行解密:
$plaintext = "hello"; $cipher = "AES-128-CBC"; $key = openssl_random_pseudo_bytes(16); $iv = openssl_random_pseudo_bytes(16); $encrypted = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); $decrypted = openssl_decrypt($encrypted, $cipher, $key, OPENSSL_RAW_DATA, $iv); echo $decrypted;
非对称加密函数:
非对称加密函数使用一对公钥和私钥进行加密和解密操作。常用的非对称加密函数有openssl_public_encrypt()、openssl_private_decrypt()、openssl_seal()和openssl_open()。
下面的代码演示了如何使用openssl_public_encrypt()函数使用公钥对字符串"hello"进行加密,并使用openssl_private_decrypt()函数使用私钥进行解密:
$plaintext = "hello"; $keyPair = openssl_pkey_new(); openssl_pkey_export($keyPair, $privateKey); $publicKey = openssl_pkey_get_details($keyPair)["key"]; openssl_public_encrypt($plaintext, $encrypted, $publicKey); openssl_private_decrypt($encrypted, $decrypted, $privateKey); echo $decrypted;
验证函数:
验证函数用于验证原始数据与哈希值或加密数据的匹配性。常用的验证函数有password_hash()、password_verify()。
下面的代码演示了如何使用password_hash()函数将密码进行哈希处理,并使用password_verify()函数验证原始密码与哈希值的匹配性:
$password = "password";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$isValid = password_verify($password, $hashedPassword);
if ($isValid) {
echo "Password is valid";
} else {
echo "Password is invalid";
}
以上提供了PHP中常用的加密和解密函数的示例。根据实际需求,可以选择适当的函数来保护敏感信息。
