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

PHP加密和解密函数:哈希、加密、解密、验证

发布时间:2023-06-30 17:09:43

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中常用的加密和解密函数的示例。根据实际需求,可以选择适当的函数来保护敏感信息。