M-am decis să postez resurse necesare dezvoltării web pe blog pentru a le găsi mai ușor atunci când am nevoie de ele.
Pentru cazurile în care vreți să transmiteți date sensibile prin diverse metode, pot fi utile funcțiile de criptare și decriptare.
Iată un exemplu probat:
define("encryption_method", "AES-128-CBC"); define("key", "alabala_portocala"); function encrypt($data) { $key = key; $plaintext = $data; $ivlen = openssl_cipher_iv_length($cipher = encryption_method); $iv = openssl_random_pseudo_bytes($ivlen); $ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); $ciphertext = base64_encode($iv . $hmac . $ciphertext_raw); return $ciphertext; } function decrypt($data) { $key = key; $c = base64_decode($data); $ivlen = openssl_cipher_iv_length($cipher = encryption_method); $iv = substr($c, 0, $ivlen); $hmac = substr($c, $ivlen, $sha2len = 32); $ciphertext_raw = substr($c, $ivlen + $sha2len); $original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); if (hash_equals($hmac, $calcmac)) { return $original_plaintext; } else { return "Ceva nu a mers cum trebuie"; } }
Găsiți mai multe detalii despre criptarea și decriptarea datelor aici: php.net
Interesant 🙂