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

使用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内置的常见数据加密技术的用法和常见用途,可以根据具体需求选择合适的加密方式来保障数据的安全。