1. 加密与解密的概念
加密与解密是信息安全领域中常用的技术手段,用于保护敏感数据的安全传输和存储。加密是将明文转换为密文的过程,而解密则是将密文还原为明文。在PHPlaravel框架中,有多种加密与解密函数可供使用。
2. PHP中常用的加密与解密函数
2.1 Hash函数
Hash函数是一种单向的加密函数,它将任意长度的输入转换为固定长度的输出。在PHPlaravel中,可以使用hash()
函数进行Hash加密。
$data = "hello";
$hash = hash('md5', $data);
echo $hash; // 输出:5d41402abc4b2a76b9719d911017c592
?>
hash()函数接受两个参数:第一个参数为Hash算法的名称,常见的有md5、sha1等;第二个参数为待加密的数据。上述代码使用md5算法对字符串"hello"进行加密,得到的Hash值为5d41402abc4b2a76b9719d911017c592。
2.2 对称加密与解密
对称加密算法使用同一个密钥进行加密和解密,加密与解密过程互为逆过程。在PHPlaravel中,可以使用openssl_encrypt()
和openssl_decrypt()
函数进行对称加密与解密。
$data = "hello";
$key = "secretkey";
$encrypted = openssl_encrypt($data, "AES-256-CBC", $key);
echo $encrypted; // 输出:l2ALwVufIj2iWozbqMt1eQ==
$decrypted = openssl_decrypt($encrypted, "AES-256-CBC", $key);
echo $decrypted; // 输出:hello
?>
上述代码中,使用AES-256-CBC算法对字符串"hello"进行加密,加密密钥为"secretkey"。加密结果为l2ALwVufIj2iWozbqMt1eQ==。然后使用同样的密钥进行解密,解密结果为原始字符串"hello"。
2.3 非对称加密与解密
非对称加密算法使用一对密钥,分别为公钥和私钥。公钥用于加密数据,私钥用于解密数据。在PHPlaravel中,可以使用openssl_public_encrypt()
和openssl_private_decrypt()
函数进行非对称加密与解密。
$data = "hello";
$publicKey = file_get_contents('public.pem');
openssl_public_encrypt($data, $encrypted, $publicKey);
echo base64_encode($encrypted); // 输出:vbFJm15H8hzFtbp6oSCHDpl41xJjG+sJh0ZD+3LqmGTDaAgLPjuPSp+lNUuXNBs6wjBgEdkL7pID8NCF9CZ9vmFqVmOUbpeJysF0OIgJ2SkIB5n8nCyJFNZ0zyDNxklyNKaaHb9Q8RwLMb2BWarPecZBGR23C/TSMhyoPvlB8/o=
$privateKey = file_get_contents('private.pem');
openssl_private_decrypt($encrypted, $decryp