양방향 암호화: 검색 가능한 비밀번호 저장
소개
허용하는 동안 비밀번호를 안전하게 저장 사용자가 이를 검색하는 것은 어려운 일입니다. 대칭 암호화는 이러한 요구를 해결할 수 있지만 구현의 미묘한 차이를 이해하는 것이 중요합니다.
PHP의 암호화 및 복호화
PHP에서 비밀번호를 암호화하고 복호화하려면 다음을 사용하는 것이 좋습니다. mcrypt 또는 OpenSSL 라이브러리. 다음은 mcrypt를 사용한 예입니다.
function encrypt($password, $key) { $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); } function decrypt($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); }
가장 안전한 알고리즘
가장 좋은 암호화 알고리즘은 특정 사용 사례에 따라 다릅니다. 비밀번호 저장의 경우 일반적으로 CBC 또는 CTR 모드의 AES-256(Rijndael)이 강력한 것으로 간주됩니다.
개인 키 저장소
개인 키를 안전하게 저장하는 것이 중요합니다. 권장되는 접근 방식 중 하나는 사용자 비밀번호와 서버측 솔트를 조합하여 사용하는 것입니다. PHP에서는 다음을 사용하여 이를 수행할 수 있습니다.
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $key = hash('sha256', $userPassword . $salt);
개인 키를 사용자 입력으로
사용자를 신뢰할 수 있는 경우 검색 시 개인 키를 제공하도록 요청합니다. 비밀번호는 추가 보안을 제공할 수 있습니다. 이는 서버측 위반으로부터 보호합니다.
보안 위험
암호화된 비밀번호는 다음과 같은 위험에 노출될 수 있습니다.
완화 전략
이러한 위험을 완화하려면 다음을 구현하세요.
위 내용은 PHP에서 양방향 암호화를 사용하여 비밀번호를 안전하게 저장하고 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!