주의: 이러한 방법을 사용하여 비밀번호를 암호화하지 마세요. 대신 안전한 비밀번호 저장을 위해 비밀번호 해싱 알고리즘을 사용하세요.
PHP 5.4 이상을 사용하고 코드 이식성을 원하는 경우 인증된 암호화를 제공하는 기존 라이브러리를 활용하세요. 암호화 방법을 선택하면 openssl_encrypt() 및 openssl_decrypt()와 같은 Openssl 방법을 사용할 수 있습니다.
AES(고급 암호화 표준) 사용을 고려하세요. 암호화를 위한 CTR 모드. 이 방법은 보안과 성능 간의 최상의 균형을 제공합니다. 지원되는 방법 목록은 openssl_get_cipher_methods()를 참조하세요.
다음 PHP 클래스는 OpenSSL을 사용하는 간단한 암호화/복호화 래퍼를 제공합니다.
class UnsafeCrypto { const METHOD = 'aes-256-ctr'; public static function encrypt($message, $key, $encode = false) { // ... if ($encode) { return base64_encode($nonce.$ciphertext); } return $nonce.$ciphertext; } public static function decrypt($message, $key, $encoded = false) { // ... $plaintext = openssl_decrypt( $ciphertext, self::METHOD, $key, OPENSSL_RAW_DATA, $nonce ); return $plaintext; } }
향상된 인증용 보안, 암호화된 데이터의 무결성을 확인하기 위한 인증 구현:
class SaferCrypto extends UnsafeCrypto { const HASH_ALGO = 'sha256'; public static function encrypt($message, $key, $encode = false) { // ... if ($encode) { return base64_encode($mac.$ciphertext); } // Prepend MAC to the ciphertext and return to caller return $mac.$ciphertext; } public static function decrypt($message, $key, $encoded = false) { // ... $calculated = hash_hmac( self::HASH_ALGO, $ciphertext, $authKey, true ); if (!self::hashEquals($mac, $calculated)) { throw new Exception('Encryption failure'); } // Pass to UnsafeCrypto::decrypt $plaintext = parent::decrypt($ciphertext, $encKey); return $plaintext; } }
위 내용은 PHP에서 간단한 양방향 암호화 및 인증을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!