插件窝 干货文章 php加密函数有哪些

php加密函数有哪些

哈希 加密 openssl password 164    来源:    2025-03-16

在PHP中,有许多内置的加密函数和扩展,可以用于数据加密、哈希、密码存储等。以下是一些常用的PHP加密函数和扩展:

1. 哈希函数

哈希函数用于生成数据的固定长度的哈希值,通常用于密码存储或数据完整性验证。

  • 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.';
    }
    

2. 对称加密

对称加密使用相同的密钥进行加密和解密。

  • 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);
    

3. 非对称加密

非对称加密使用一对公钥和私钥进行加密和解密。

  • openssl_public_encrypt(): 使用公钥加密数据。

    $data = "Sensitive data";
    openssl_public_encrypt($data, $encrypted, $publicKey);
    
  • openssl_private_decrypt(): 使用私钥解密数据。

    openssl_private_decrypt($encrypted, $decrypted, $privateKey);
    

4. Base64编码

Base64编码不是加密,但常用于编码二进制数据为文本格式。

  • base64_encode(): 对数据进行Base64编码。

    $encoded = base64_encode('your_data');
    
  • base64_decode(): 对Base64编码的数据进行解码。

    $decoded = base64_decode($encoded);
    

5. 随机数生成

生成安全的随机数用于加密操作。

  • random_bytes(): 生成加密安全的随机字节。

    $randomBytes = random_bytes(32);
    
  • random_int(): 生成加密安全的随机整数。

    $randomInt = random_int(1, 100);
    

6. 其他加密相关函数

  • mcrypt_encrypt()mcrypt_decrypt(): 用于加密和解密数据(已弃用,不推荐使用)。
  • hash_hmac(): 生成带有密钥的哈希值(HMAC)。 php $hmac = hash_hmac('sha256', 'your_data', 'your_secret_key');

7. 密码学扩展

  • OpenSSL: 提供了广泛的加密功能,包括对称加密、非对称加密、数字签名等。
  • Sodium: 提供了现代密码学功能,如加密、解密、签名、密钥交换等。 php $key = sodium_crypto_secretbox_keygen(); $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $ciphertext = sodium_crypto_secretbox('your_message', $nonce, $key);

8. 密码存储最佳实践

  • 使用 password_hash()password_verify() 进行密码存储和验证。
  • 避免使用 md5()sha1() 等不安全的哈希算法进行密码存储。

总结

PHP提供了丰富的加密函数和扩展,开发者应根据具体需求选择合适的加密方法。对于密码存储,推荐使用 password_hash()password_verify(),而对于数据加密,推荐使用 openssl_encrypt()openssl_decrypt()