현재 위치: > 최신 기사 목록> crypt ()를 사용하여 간단한 사용자 인증 시스템을 구현하십시오

crypt ()를 사용하여 간단한 사용자 인증 시스템을 구현하십시오

M66 2025-05-24

간단한 사용자 시스템을 개발할 때 암호화 된 비밀번호 저장은 보안의 기초 중 하나입니다. PHP는 매우 실용적인 암호화 기능 Crypt () 를 제공하여 기본 암호 암호화 및 검증 기능을 신속하게 구현할 수 있도록 도와줍니다. 이 기사는 간결한 예제를 사용하여 Crypt () 함수를 사용하여 간단한 사용자 인증 시스템을 구축하는 방법을 설명합니다.

1. crypt () 함수를 이해하십시오

crypt () 는 일원 문자열 암호화에 대한 PHP의 함수이며, 일반적으로 비밀번호 암호화에 사용됩니다. 기본 구문은 다음과 같습니다.

 string crypt(string $string, string $salt)

그중에서도 $ string 은 암호화 해야하는 문자열이며 $ salt는 암호화 결과에 영향을 미치는 데 사용되는 "소금"값이며 다양한 암호화 알고리즘 (예 : Blowfish, MD5, SHA-256, SHA-512 등)을 지원합니다.

2. 등록 논리를 만듭니다

등록 할 때 암호를 암호화하고 저장해야합니다. 간단한 등록 예는 다음과 같습니다.

 <?php
// 사용자가 입력 한 비밀번호
$password = 'user_password123';

// 사용 Blowfish 알고리즘은 암호화 암호를 생성합니다
$hash = crypt($password, '$2y$10$' . bin2hex(random_bytes(11)));

// 데이터베이스에 저장하기 위해 시뮬레이션하십시오
file_put_contents('users.txt', "username:$hash\n");

echo "사용자 등록,비밀번호는 암호화되고 저장됩니다。";
?>

여기서 우리는 $ 2y $ 10 $ 로 시작하는 소금 접두사를 사용합니다. 이는 Blowfish 알고리즘 (암호 암호화에 권장)을 사용하는 것을 의미합니다. Random_bytes (11)는 임의의 소금 값을 생성하여 암호가 동일하더라도 각 암호화 결과가 다릅니다.

3. 로그인 검증 로직을 만듭니다

사용자가 로그인하면 입력 된 비밀번호를 동일한 소금을 사용하여 암호화 한 다음 데이터베이스의 암호 해시와 비교해야합니다.

 <?php
// 사용자 입력
$input_username = 'username';
$input_password = 'user_password123';

// ~에서“데이터 베이스”정보를 읽으십시오
$data = file('users.txt');
foreach ($data as $line) {
    list($stored_username, $stored_hash) = explode(':', trim($line));

    if ($input_username === $stored_username) {
        // 사용存储的 hash 처럼 salt 다시 입력 한 비밀번호를 암호화합니다
        if (crypt($input_password, $stored_hash) === $stored_hash) {
            echo "성공적으로 로그인하십시오,다시 오신 것을 환영합니다 $input_username!";
        } else {
            echo "오류 비밀번호。";
        }
        exit;
    }
}

echo "사용자는 존재하지 않습니다。";
?>

이런 식으로 공격자가 암호 해시를 훔치더라도 해시에서 원래 비밀번호를 직접 복원 할 수 없습니다. 동시에, 각 사용자는 다른 소금을 사용하므로 여러 사용자가 동일한 암호를 사용하더라도 저장된 해시 값은 다릅니다.

4. 안전을 더욱 강화하십시오

Crypt ()는 기본 보안을 제공 할 수 있지만 PHP는 5.5에서 Password_hash ()Password_verify ()를 사용하는 것이 좋습니다. 그들은 여전히 ​​하단에 crypt ()를 사용하지만 캡슐화는 더 완벽하고 안전합니다.

그러나 일부 제한된 환경 (예를 들어 소금을 수동으로 제어 해야하는 기존 서버 또는 시스템)에서 Crypt () 는 여전히 효과적인 도구입니다.

5. 요약

위의 내용을 통해 PHP의 Crypt () 함수를 사용하여 간단한 사용자 확인 시스템을 신속하게 구축 할 수 있음을 알 수 있습니다.

  • 암호를 암호화하고 등록 할 때 저장하십시오.

  • 암호를 다시 암호화하고 로그인 할 때 동일한 소금 값과 비교하십시오.

  • 임의의 소금과 결합하여 암호화 강도를 높이고 무지개 테이블 공격을 방지합니다.

현대 프로젝트에는 Password_hash ()가 더 권장되지만 Crypt () 의 기본 메커니즘을 이해하는 것은 여전히 ​​저수준 사용자 정의가 필요한 경우에도 여전히 도움이됩니다.