使用PHP内置函数实现常见数据加密技术
发布时间:2023-06-16 21:55:54
PHP内置了许多常见的数据加密函数,包括哈希函数、对称加密和非对称加密。下面详细介绍这些函数的用法及其常见用途。
哈希函数
哈希函数将任意长度的消息转换为固定长度的哈希值,通常用于验证数据的完整性和防止篡改。PHP中常用的哈希函数有MD5、SHA1、SHA256、SHA512等。
MD5算法的用法如下:
$string = "Hello World"; $hash = md5($string); echo "MD5: $hash";
SHA1算法的用法如下:
$string = "Hello World"; $hash = sha1($string); echo "SHA1: $hash";
对称加密
对称加密使用共享的密钥加密和解密数据,常用算法有AES和DES。PHP中使用mcrypt扩展实现对称加密。
AES算法的用法如下:
$data = "Hello World";
$key = md5("mykey");
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC);
echo "Encrypted: " . base64_encode($encrypted);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC);
echo "Decrypted: $decrypted";
DES算法的用法和AES类似,使用的是MCRYPT_DES算法。
非对称加密
非对称加密使用公钥加密数据,只能使用私钥进行解密。常用算法有RSA。PHP中使用openssl扩展实现非对称加密。
生成公钥和私钥的方法如下:
$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
// 生成新的密钥对
$res = openssl_pkey_new($config);
// 获取私钥
openssl_pkey_export($res, $privateKey);
// 获取公钥
$publicKey = openssl_pkey_get_details($res);
$publicKey = $publicKey["key"];
使用公钥加密、私钥解密的方法如下:
$data = "Hello World";
// 加载公钥
$publicKey = file_get_contents("public_key.pem");
// 加密
openssl_public_encrypt($data, $encrypted, $publicKey, OPENSSL_PKCS1_PADDING);
echo "Encrypted: " . base64_encode($encrypted);
// 加载私钥
$privateKey = file_get_contents("private_key.pem");
// 解密
openssl_private_decrypt($encrypted, $decrypted, $privateKey, OPENSSL_PKCS1_PADDING);
echo "Decrypted: $decrypted";
使用私钥签名、公钥验证的方法如下:
$data = "Hello World";
// 加载私钥
$privateKey = file_get_contents("private_key.pem");
// 签名
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA512);
echo "Signature: " . base64_encode($signature);
// 加载公钥
$publicKey = file_get_contents("public_key.pem");
// 验证签名
$isValid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA512);
echo "Valid: " . ($isValid ? "true" : "false");
以上就是PHP内置的常见数据加密技术的用法和常见用途,可以根据具体需求选择合适的加密方式来保障数据的安全。
