What are the differences between encryption and hashing in the context of PHP security practices?

Encryption is a reversible process that uses a key to transform data into a ciphertext that can be decrypted back to its original form. Hashing is a one-way process that converts data into a fixed-length string of characters, making it impossible to reverse the process and retrieve the original data. In PHP security practices, encryption is typically used to protect sensitive data during transmission or storage, while hashing is used to securely store passwords or verify data integrity.

// Encrypting data using OpenSSL in PHP
$data = "Hello, world!";
$key = "secretkey";
$method = "AES-256-CBC";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$encrypted = openssl_encrypt($data, $method, $key, 0, $iv);

// Hashing passwords using bcrypt in PHP
$password = "secretpassword";
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);