현재 위치: > 최신 기사 목록> crypt () 함수의 매개 변수 구문 분석 및 사용 예

crypt () 함수의 매개 변수 구문 분석 및 사용 예

M66 2025-05-22

PHP에서 Crypt () 함수는 일반적으로 사용되는 암호화 기능으로, 특히 암호 저장을 처리 할 때 주로 일회용으로 문자열을 암호화하는 데 사용됩니다. 이 기사는 Crypt () 함수의 매개 변수를 자세히 구문 분석하고 PHP의 Crypt () 함수를 사용하여 문자열을 안전하게 암호화하는 방법을 통해 예제를 보여줍니다.

1. crypt () 함수 소개

Crypt () 는 PHP의 내장 암호화 기능이며 Unix의 Crypt () 함수를 기반으로 구현됩니다. 다양한 암호화 알고리즘 (예 : DES, MD5, Blowfish, SHA-256, SHA-512 등)을 사용하여 입력 문자열을 암호화하고 암호화 된 문자열을 반환합니다.

기능 프로토 타입 :

 string crypt ( string $str [, string $salt ] )
  • $ str : 암호화 해야하는 문자열, 일반적으로 비밀번호입니다.

  • $ salt (선택 사항) : 암호화 알고리즘과 소금에 절인 문자열을 지정하는 데 사용됩니다. 다른 소금은 암호화 알고리즘과 결과를 결정합니다.

2. crypt ()의 매개 변수 분석

1. 문자열 매개 변수 $ str

이것은 일반적으로 사용자의 암호로 암호화 할 일반 텍스트 문자열입니다.

2. 소금 매개 변수 $ 소금

소금 매개 변수는 암호화 알고리즘과 결과를 결정하는 핵심입니다. 다른 형식의 소금은 다른 알고리즘을 나타냅니다.

  • 기본 DES 암호화 <br> 예를 들어 "AB"와 같은 길이가 2 자의 소금
    이것은 보안이 약한 가장 독창적 인 암호화 방법이며 권장되지 않습니다.

  • MD5 암호화 <br> $ 1 $ 로 시작하고 "$ 1 $ M66Net12 $" 와 같은 최대 8 자 소금이 이어집니다.
    이것은 MD5 알고리즘을 사용하여 암호화됩니다.

  • 블로우 피쉬 암호화 <br> $ 2A $ , $ 2Y $ , $ 2B $ 등으로 시작하고, 예를 들어 비용 계수와 22 자리 소금을 나타내는 2 자리 숫자로 시작하십시오 .
    Blowfish는 비교적 안전한 알고리즘입니다.

  • SHA-256 암호화 <br> $ 5 $ 로 시작한 다음 소금으로 시작하십시오. "$ 5 $ M66net $"

  • SHA-512 암호화 <br> $ 6 $ 로 시작한 다음 Salt : "$ 6 $ M66net $"

3. 소금 형식의 예

 // MD5 소금 예
$salt_md5 = '$1$m66net12$';

// Blowfish 소금 예,10 비용 요인입니다(cost factor)
$salt_blowfish = '$2y$10$m66netsaltsaltsaltsa$';

// SHA-256 소금 예
$salt_sha256 = '$5$m66net$';

// SHA-512 소금 예
$salt_sha512 = '$6$m66net$';

3. crypt ()의 예

다음은 crypt () 함수를 사용하여 문자열을 암호화하는 방법을 보여주는 몇 가지 예입니다.

1. 기본 DES 암호화 사용 (권장되지 않음)

 $password = "mypassword";
$salt = "m6";  // 2캐릭터 소금
$hashed = crypt($password, $salt);
echo "DES암호화 결과:" . $hashed;

2. MD5와 암호화

 $password = "mypassword";
$salt = '$1$m66net12$';  // ~에 의해 $1$ 처음에 소금
$hashed = crypt($password, $salt);
echo "MD5암호화 결과:" . $hashed;

3. Blowfish와 암호화

 $password = "mypassword";
$salt = '$2y$10$m66netsaltsaltsaltsa$';  // Blowfish,비용10
$hashed = crypt($password, $salt);
echo "Blowfish암호화 결과:" . $hashed;

4. SHA-512와의 암호화

 $password = "mypassword";
$salt = '$6$m66net$';
$hashed = crypt($password, $salt);
echo "SHA-512암호화 결과:" . $hashed;

4. 비밀번호 확인 예제

암호를 암호화 한 후 입력 된 암호를 확인할 때 동일한 소금으로 암호화 한 다음 결과가 동일한 지 비교하십시오.

 // 비밀번호 해시가 데이터베이스에 저장되었다고 가정합니다
$stored_hash = '$6$m66net$........';  // 从数据库取出的암호화 결과

// 사용자가 로그인하면 암호가 입력되었습니다
$input_password = "mypassword";

// 소금을 제거하십시오,대개 stored_hash 처음 몇 부분,특정 길이는 알고리즘에 따라 다릅니다
$salt = substr($stored_hash, 0, strrpos($stored_hash, '$') + 1);

// 동일한 소금으로 암호를 다시 밀어 넣습니다
$input_hash = crypt($input_password, $salt);

if ($input_hash === $stored_hash) {
    echo "비밀번호 확인이 성공했습니다";
} else {
    echo "비밀번호 확인이 실패했습니다";
}

5. 요약

  • crypt () 함수는 다양한 암호화 알고리즘을 지원하며 소금 매개 변수에 의해 결정됩니다.

  • Blowfish ( $ 2y $ ) 또는 SHA-512 ( $ 6 $ ) 알고리즘을 사용하는 것이 좋습니다.

  • 소금은 무작위적이고 독특해야하며 올바른 형식이어야합니다.

  • 비밀번호 확인이 암호화 된 해시 값의 소금을 사용하여 암호를 다시 암호화 한 다음 비교하십시오.