PHP 5.3 đã giới thiệu một phương pháp mã hóa mới thực sự dễ sử dụng: openssl_encrypt
và openssl_decrypt
. Tài liệu không được viết ở đây, vì vậy đây là một ví dụ đơn giản:
$textToEncrypt = "My super secret information.";
$encryptionMethod = "AES-256-CBC"; // AES is used by the U.S. gov't to encrypt top secret documents.
$secretHash = "25c6c7ff35b9979b151f2136cd13b0ff";
//To encrypt
$encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
//To Decrypt
$decryptedMessage = openssl_decrypt($encryptedMessage, $encryptionMethod, $secretHash);
//Result
echo "Encrypted: $encryptedMessage <br>Decrypted: $decryptedMessage";
Tôi chọn 256-AES vì nó chắc chắn và nhanh. Nó đã được chính phủ Hoa Kỳ chấp nhận để mã hóa các tài liệu bí mật hàng đầu. Nó nhanh chóng xem xét máy và phần mềm.Dưới đây là danh sách các phương pháp mã hóa có sẵn:
AES-128-CBC, AES-128-CFB, AES-128-CFB1, AES-128-CFB8, AES-128-ECB, AES-128-OFB, AES- 192-CBC, AES-192-CFB, AES-192-CFB1, AES-192-CFB8, AES-192-ECB, AES-192-OFB, AES-256-CBC, AES-256-CFB, AES-256- CFB1, AES-256-CFB8, AES-256-ECB, AES-256-OFB, BF-CBC, BF-CFB, BF-ECB, BF-OFB, CAMELLIA-128-CBC, CAMELLIA-128-CFB, CAMELLIA- 128-CFB1, CAMELLIA-128-CFB8, CAMELLIA-128-ECB, CAMERA-128-OFB, CAMELLIA-192-CBC, CAMELLIA-192-CFB, CAMELLIA-192-CFB1, CAMELLIA-192-CFB8, CAMELLIA-192- ECB, CAMELLIA-192-OFB, CAMELLIA-256-CBC, CAMELLIA-256-CFB, CAMELLIA-256-CFB1, CAMELLIA-256-CFB8, CAMELLIA-256-ECB, CAMELLIA-256-OFB, CAST5-CBC, CAST5- CFB, CAST5-ECB, CAST5-OFB, DES-CBC, DES-CFB, DES-CFB1, DES-CFB8, DES-ECB, DES-EDE, DES-EDE-CBC, DES-EDE-CFB, DES-EDE- OFB, DES-EDE3, DES-EDE3-CBC, DES-EDE3-CFB, DES-EDE3-CFB1, DES-EDE3-CFB8, DES-EDE3-OFB, DES-OFB, DESX-CBC, RC2-40-CBC, RC2-64-CBC, RC2-CBC, RC2-CFB, RC2-ECB, RC2-OFB, RC4, RC4-40, SEED-CBC, SEED-CFB, SEED-ECB, SEED-OFB, aes-128-cbc, aes-128-cfb, aes-128-cfb1, a-128-cfb8, aes-128-ecb, aes-128-ofb, aes-192-cbc, aes-192- cfb, aes-192-cfb1, aes-192-cfb8, aes-192-ecb, aes-192-ofb, aes-256-cbc, aes-256-cfb, aes-256-cfb1, aes-256-cfb8, aes-256-ecb, aes-256-ofb, bf-cbc, bf-cfb, bf-ecb, bf-ofb, camellia-128-cbc, camellia-128-cfb, camellia-128-cfb1, camellia-128- cfb8, camellia-128-ecb, camellia-128-ofb, camellia-192-cbc, camellia-192-cfb, camellia-192-cfb1, camellia-192-cfb8, camellia-192-ecb, camellia-192-ofb, camellia-256-cbc, camellia-256-cfb, camellia-256-cfb1, camellia-256-cfb8, camellia-256-ecb, camellia-256-ofb, cast5-cbc, cast5-cfb, cast5-ecb, cast5- ofb, des-cbc, des-cfb, des-cfb1, des-cfb8, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ede3, des- ede3-cbc, des-ede3-cfb, des-ede3-cfb1, des-ede3-cfb8, des-ede3-ofb, des-ofb, desx-cbc, rc2-40-cbc, rc2-64-cbc, rc2- cbc, r c2-CFB, RC2-ECB, RC2-ofb, rc4, rc4-40, hạt giống-CBC, hạt giống-CFB, hạt giống-ECB, hạt giống-ofb
CẬP NHẬT QUAN TRỌNG !!!
Cảm ơn Hobo và Jorwin đã chỉ ra rằng trong PHP 5.3.3> có một tham số mới làm cho chức năng này an toàn hơn một chút.
Jorwin tham chiếu liên kết này trong his comment, và đây là một đoạn trích đó là áp dụng:
Trong 5.3.3 họ đã thêm vào một tham số mới, string $iv
(khởi vector) các thông số thực là: string openssl_encrypt (string $data , string $method , string $password, bool $raw_output = false, string $iv)
Nếu thiếu $iv
, cảnh báo được đưa ra: "Sử dụng Vector khởi tạo trống (iv) có khả năng không an toàn và không được khuyến nghị".
Nếu $iv
là quá ngắn, cảnh báo khác: "IV thông qua chỉ dài 3 byte, mật mã hy vọng một IV chính xác 8 byte, đệm với \ 0"
cùng IV nên được sử dụng trong openssl_decrypt()
đã bỏ phiếu vì tôi không nghĩ rằng cuộc trò chuyện kết thúc thực sự là về mã hóa hai chiều ... –