PHP加密函数大全:一键加密解密保护你的数据安全!
随着互联网的发展和普及,数据安全已经成为人们需要重视的问题之一。在网站开发中,我们需要使用加密函数来对重要数据进行加密处理,以保证数据的安全性。PHP作为一种常用的服务器端编程语言,也提供了一系列的加密函数。
本文将列举PHP中常用的加密函数,并讲解它们的使用方法和注意事项。这些函数包括加密算法、散列算法、HMAC算法和密码学算法等。使用这些函数可以帮我们快速地实现数据加密解密,保护数据的安全性。
一、加密算法函数
1. base64_encode()和base64_decode()
base64是一种将二进制数据编码的方法,通过该函数可以将一些敏感信息进行编码,减少被黑客盗取的风险。该函数可以将任意字符编码成可打印字符,便于传输。
用法示例:
$str = 'Hello World!'; $encode_str = base64_encode($str); echo $encode_str; // SGVsbG8gV29ybGQh $decode_str = base64_decode($encode_str); echo $decode_str; // Hello World!
2. openssl_encrypt()和openssl_decrypt()
openssl是一个开源的加密和安全套件,可以实现对数据进行加密和解密。该函数提供了对称加密和非对称加密两种加密算法。其中,对称加密算法的速度较快,适合对长篇文本进行加密处理,而非对称加密算法较为安全,适合传输对比敏感的数据。
用法示例:
// 对称加密
$str = 'Hello World!';
$key = '1234567890123456';
$iv = '1234567890123456';
$encrypt_str = openssl_encrypt($str, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo base64_encode($encrypt_str); // 2tTZTeIjmMrkIO4Qp7mQeA==
$decrypt_str = openssl_decrypt(base64_decode('2tTZTeIjmMrkIO4Qp7mQeA=='), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo $decrypt_str; // Hello World!
// 非对称加密
$str = 'Hello World!';
$public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcvDkEcwLr8/QqLtr9VGez/Fog
I/RZhN2pD57Wfh+xV/0m6nIIlTQ9kvXrNejr26h1IvGdvpINscHWD3c/e44RMt3f
Aemfh4jxYyntw0mXxSBr6HJtinGJ+LGXi4Z5OpPkTDJXt7GB3wZ6nxJpvtp/LqI3
SEJ6IpfT0YEByyujMQIDAQAB
-----END PUBLIC KEY-----';
$private_key = '-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDcvDkEcwLr8/QqLtr9VGez/FogI/RZhN2pD57Wfh+xV/0m6nII
lTQ9kvXrNejr26h1IvGdvpINscHWD3c/e44RMt3fAemfh4jxYyntw0mXxSBr6HJt
inGJ+LGXi4Z5OpPkTDJXt7GB3wZ6nxJpvtp/LqI3SEJ6IpfT0YEByyujMQIDAQAB
AoGAaY+kD6DB69UHtnLEkuf3FYCxilcDnRQnKz0j+7/Mzl2pSzGqAZWAzOviNFty
nPofLXEHarUocuzJe1mGQ3zZK19ZFENb0jOBv98MgKfQdRoXeIj/kDSdWmR4DcQN
jolyUuytTx+aTsF7fflN2fN4OA5sc/rYMQt6x+5AA8KyGgECQQDvYiGvd6Yy1BBG
NPhysLPsPV/mw8hx9L9bt3BaKtNhGkEBpjl6GGFc8H0N+djftDW9XXBvQMX9WJWr
WiQO9kydAkEA1BRA+x+hIvpNhDP4yZADWwmfTe+Nm8gqEf+a4a8Sm6hc7SfKkd+T
3t8cR5LF18LLji1iP949H/bvl+vIKnmS5wJAVSbZABIMRymezOYzV1Fd+flwwek2
Kw/4e4OfrY9Q2mPxX/NKotnvVPgjd6Dz/P+zw7G2/CiNXi1OMka2jc3X5QJBANXD
7gcRma+4lL+w8yVtiJzpt9m5u9mt7D7DQfVJMu0Aj7v+mBc7ad0bdZpmXV1Kfzcv
pxd7QuR+Nf02JLl2Q6MCQHBCEMb4REugDfu7WbrNHXz1jsRMxX0nZRYXbXOktyCr
Sc4BNVhoLMUNYYcDWJQCPCNmM+8pKEx4g8LYN3vESoc=
-----END RSA PRIVATE KEY-----';
$encrypt_str = ''; // 存放加密后的数据
openssl_public_encrypt($str, $encrypt_str, $public_key);
echo base64_encode($encrypt_str); // RjKCm9R4K5ojOv4zxrBsKrtZc2wL7H2SJiJgBbD2B6Faot8NJlPcdiP/edoiK8kf3JKnQqI2SB0bwCWheZUMMA==
$decrypt_str = ''; // 存放解密后的数据
openssl_private_decrypt(base64_decode('RjKCm9R4K5ojOv4zxrBsKrtZc2wL7H2SJiJgBbD2B6Faot8NJlPcdiP/edoiK8kf3JKnQqI2SB0bwCWheZUMMA=='), $decrypt_str, $private_key);
echo $decrypt_str; // Hello World!
3. mcrypt_encrypt()和mcrypt_decrypt()
mcrypt已经被官方废弃,建议使用openssl代替。
二、散列算法函数
散列算法将任意长度的数据映射为固定长度的散列值,通常用来判断数据的完整性和保密性。
1. md5()
该函数用于计算给定字符串的MD5散列值,散列值是一个32位的16进制数字,通常用于密码的加密。
用法示例:
$str = 'Hello World!'; echo md5($str); // bd1ef9a3a42e2b32c4ca9e9b5b03518c
2. sha1()
该函数用于计算给定字符串的SHA1散列值,散列值是一个40位的16进制数字,同样用于密码的加密。
用法示例:
$str = 'Hello World!'; echo sha1($str); // 7b502c3a1f48c8609ae212cdfb639dee39673f5e
3. hash()
该函数用于计算任意长度的字符串的散列值,可通过第二个参数指定计算的散列算法种类,常用的算法有MD5、SHA1等。
用法示例:
`
$str = 'Hello World!';
echo hash('md5', $str); // bd1ef9a3a42e2b32c4ca9e9b5b03518c
echo hash('sha1', $str); // 7b502c
