>백엔드 개발 >PHP 튜토리얼 >PHP에서 암호화된 비밀번호를 어떻게 안전하게 검색할 수 있나요?

PHP에서 암호화된 비밀번호를 어떻게 안전하게 검색할 수 있나요?

DDD
DDD원래의
2024-12-27 12:52:13942검색

How Can I Securely Retrieve Encrypted Passwords in PHP?

암호화 및 해싱을 뛰어넘는 안전한 비밀번호 검색

데이터 보안을 보장하는 것도 중요하지만 비밀번호와 같은 민감한 정보를 저장하는 것은 고유한 과제를 안겨줍니다. 암호화의 본질은 데이터에 액세스할 수 없게 만드는 데 있기 때문에 나중에 검색하기 위해 암호화하는 것은 직관에 어긋나는 것처럼 보일 수 있습니다. 그러나 잘 정의된 암호화 및 복호화 전략을 통해 이러한 장애물을 극복할 수 있습니다.

PHP에서는 단방향 변환이므로 검색이 불가능하기 때문에 bcrypt와 같은 해시 함수를 비밀번호로 간단히 사용할 수 없습니다. 이 문제를 해결하려면 보안을 유지하면서 원래 비밀번호를 검색할 수 있는 암호화 및 스크램블링 방법의 조합을 사용하는 것이 좋습니다.

종합 암호화 솔루션

비밀번호를 암호화하고 해독하려면 다음 PHP를 고려하십시오. 코드:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted ';
// Encryption
$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
// Decryption
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);

필수 고려 사항

제공된 코드는 정보를 암호화하지만 변조를 방지하기 위해 암호문을 인증하지는 않는다는 점에 유의하는 것이 중요합니다. . 보안 강화를 위해 인증되지 않은 암호화에만 의존하지 않는 것이 좋습니다.

추가 리소스

자세한 내용은 다음 리소스를 살펴보세요. 통찰력:

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/2224584

주의: 암호화 키 보안

절대로 "비밀번호"를 암호화 키로 사용하지 마세요. 암호화 키는 임의의 문자열이어야 합니다.

위 내용은 PHP에서 암호화된 비밀번호를 어떻게 안전하게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.