PHP 中的几种主要加密方式:
散列函数将数据转换成一个固定长度的字符串,这个过程是不可逆的。散列通常用于存储密码,以确保即使数据库被泄露,攻击者也无法轻易得到原始密码。
$hash = md5("string_to_hash");
$hash = sha1("string_to_hash");
$hash = hash('sha256', "string_to_hash");
$password = "user_password"; $hash = password_hash($password, PASSWORD_DEFAULT);
验证密码散列:
if (password_verify($password, $hash)) {
echo "Password is valid.";
} else {
echo "Invalid password.";
}
对称加密使用相同的密钥进行加密和解密。它比非对称加密要快,适合加密大量数据。
$data = "Sensitive data";
$key = '0123456789abcdef'; // AES-128 密钥长度
$iv = openssl_random_pseudo_bytes(16); // 随机初始化向量
$encrypted = openssl_encrypt($data, "AES-128-CBC", $key, 0, $iv);
$decrypted = openssl_decrypt($encrypted, "AES-128-CBC", $key, 0, $iv);
非对称加密使用一对密钥:公钥加密数据,私钥解密。这种方式常用于加密小量数据,如加密密码、安全传输密钥等。
// 生成密钥对
$res = openssl_pkey_new([
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
]);
// 导出密钥
openssl_pkey_export_to_file($res, "private.key");
$pubKey = openssl_pkey_get_details($res);
openssl_pkey_export_to_file($pubKey["key"], "public.key");
// 加密
$publicKey = openssl_pkey_get_public("file://public.key");
openssl_public_encrypt($data, $encrypted, $publicKey);
// 解密
$privateKey = openssl_pkey_get_private("file://private.key");
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
SSL/TLS 用于加密网络通信,确保数据在客户端和服务器之间传输过程中的安全。
HMAC 是一种用于验证数据完整性和认证的机制,它结合了加密密钥和散列函数。
$data = "data";
$key = "secret_key";
$hmac = hash_hmac('sha256', $data, $key);
加密是保护数据安全的重要手段,但也需要正确实施和维护,以确保其有效性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。