在PHP中,有许多内置的加密函数和扩展,可以用于数据加密、哈希、密码存储等。以下是一些常用的PHP加密函数和扩展:
哈希函数用于生成数据的固定长度的哈希值,通常用于密码存储或数据完整性验证。
md5(): 生成MD5哈希值(不推荐用于密码存储)。
$hash = md5('your_string');
sha1(): 生成SHA1哈希值(不推荐用于密码存储)。
$hash = sha1('your_string');
hash(): 支持多种哈希算法(如SHA256、SHA512等)。
$hash = hash('sha256', 'your_string');
password_hash(): 用于生成安全的密码哈希(推荐使用)。
$hash = password_hash('your_password', PASSWORD_DEFAULT);
password_verify(): 用于验证密码哈希。
if (password_verify('your_password', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
对称加密使用相同的密钥进行加密和解密。
openssl_encrypt(): 使用OpenSSL库进行加密。
$data = "Sensitive data";
$key = "your_secret_key";
$cipher = "AES-128-CBC";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted = openssl_encrypt($data, $cipher, $key, 0, $iv);
openssl_decrypt(): 使用OpenSSL库进行解密。
$decrypted = openssl_decrypt($encrypted, $cipher, $key, 0, $iv);
非对称加密使用一对公钥和私钥进行加密和解密。
openssl_public_encrypt(): 使用公钥加密数据。
$data = "Sensitive data";
openssl_public_encrypt($data, $encrypted, $publicKey);
openssl_private_decrypt(): 使用私钥解密数据。
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
Base64编码不是加密,但常用于编码二进制数据为文本格式。
base64_encode(): 对数据进行Base64编码。
$encoded = base64_encode('your_data');
base64_decode(): 对Base64编码的数据进行解码。
$decoded = base64_decode($encoded);
生成安全的随机数用于加密操作。
random_bytes(): 生成加密安全的随机字节。
$randomBytes = random_bytes(32);
random_int(): 生成加密安全的随机整数。
$randomInt = random_int(1, 100);
php
$hmac = hash_hmac('sha256', 'your_data', 'your_secret_key');
php
$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox('your_message', $nonce, $key);
password_hash()
和 password_verify()
进行密码存储和验证。md5()
和 sha1()
等不安全的哈希算法进行密码存储。PHP提供了丰富的加密函数和扩展,开发者应根据具体需求选择合适的加密方法。对于密码存储,推荐使用 password_hash()
和 password_verify()
,而对于数据加密,推荐使用 openssl_encrypt()
和 openssl_decrypt()
。