현재 위치: > 최신 기사 목록> PHP에서 crypt () 함수를 사용하여 명령 줄 사용자 확인 도구를 구축하는 방법은 무엇입니까?

PHP에서 crypt () 함수를 사용하여 명령 줄 사용자 확인 도구를 구축하는 방법은 무엇입니까?

M66 2025-05-21

일일 시스템 관리 또는 개발 프로세스에서는 특히 명령 줄 도구를 구축 할 때 간단한 사용자 확인 메커니즘이 필요합니다. 제작 환경에서 OAUTH, JWT 또는 데이터베이스 인증 메커니즘을 사용하는 것이 좋습니다. 일부 가벼운 시나리오에서는 Crypt () 함수를 기반으로하는 사용자 인증 도구로 충분합니다.

이 기사에서는 crypt ()를 기반으로 PHP 명령 줄 사용자 확인 도구를 구축하기 위해 단계별로 진행됩니다.

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

Crypt () 는 PHP의 내장 암호화 기능으로, 일방 통행 해싱으로 암호를 암호화하는 데 사용됩니다. 제공된 소금 형식에 따라 다양한 알고리즘 (예 : DES, MD5, SHA-256, SHA-512)을 사용할 수 있습니다.

예:

 $password = 'secret123';
$hashed = crypt($password, '$6$rounds=5000$mysalt$'); // 사용 SHA-512 암호화
echo $hashed;

2. 사용자 비밀번호 파일 빌드

먼저 사용자 이름과 해당 암호화 암호를 저장하는 데 사용되는 Linux /etc /Shadow 와 유사한 사용자 비밀번호 파일을 정의해야합니다.

예를 들어 다음 내용이있는 user.txt 파일을 만듭니다.

 alice:$6$rounds=5000$randomsalt$TtXcNpEYgkQq6nGyTT1ZqJK6sOHZ7GUa0OtUzBDwK8DUD.QHrVmMTE6EKH9vdA/5jYrc6IQsb9M4OzhxZs7Hz1
bob:$6$rounds=5000$othersalt$z1MBfFaSzPIcL7PZ8coYumWqaYvKPWhjvOwwBQ25BqNjfGC2THcR2A2E2MBc6m/mM6z2qKNEqgghADnIJo7KO0

3. 검증 스크립트를 작성하십시오

Auth.php 파일 작성 :

 <?php
// 명령 줄에서 실행되는지 확인하십시오
if (php_sapi_name() !== 'cli') {
    exit("명령 줄 에서이 스크립트를 실행하십시오。\n");
}

// 사용자 이름과 비밀번호를 얻습니다
fwrite(STDOUT, "사용자 이름: ");
$username = trim(fgets(STDIN));

fwrite(STDOUT, "비밀번호: ");
system('stty -echo'); // 隐藏비밀번호输入
$password = trim(fgets(STDIN));
system('stty echo');
fwrite(STDOUT, "\n");

// 사용자 파일을 읽으십시오
$userFile = __DIR__ . '/users.txt';
if (!file_exists($userFile)) {
    exit("사용자 파일이 존재하지 않습니다。\n");
}

$found = false;
$lines = file($userFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    list($user, $hashed) = explode(':', $line, 2);
    if ($user === $username) {
        // 验证비밀번호
        if (crypt($password, $hashed) === $hashed) {
            echo "인증이 성공적입니다!환영,{$username}。\n";
        } else {
            echo "비밀번호错误。\n";
        }
        $found = true;
        break;
    }
}

if (!$found) {
    echo "사용자는 존재하지 않습니다。\n";
}

4. 새 사용자를 추가하는 방법?

간단한 명령 줄 도구를 통해 사용자에게 비밀번호 추가를 수행 할 수 있습니다.

 <?php
// 创建新用户암호화条目
$username = readline("新사용자 이름: ");
$password = readline("비밀번호: ");

// 생성하다 salt 그리고 hash
$salt = base64_encode(random_bytes(8));
$salt = str_replace('+', '.', substr($salt, 0, 16)); // 호환성 처리
$fullSalt = '$6$rounds=5000$' . $salt . '$';
$hashedPassword = crypt($password, $fullSalt);

// 출력 결과
echo "{$username}:{$hashedPassword}\n";
// 추가 할 수 있습니다 users.txt 파일에서

V. 결론

이 도구는 간단하지만 스크립트 자동화, 보안 테스트 또는 빠른 프로토 타이핑에 매우 유용합니다. BASH 스크립트, 자동 배포 프로세스에 쉽게 통합 할 수 있으며 PHP CLI 도구에 액세스하기 위해 인터페이스를 보호하는 데 사용됩니다.

생산 환경의 경우보다 전문적인 사용자 인증 메커니즘을 채택하고 암호 파일에 적절한 권한 제어를 제공하는 것이 좋습니다.