현재 위치: > 최신 기사 목록> crypt ()를 사용하여 이중 암호화 체계 (Necked Encryption) 구현

crypt ()를 사용하여 이중 암호화 체계 (Necked Encryption) 구현

M66 2025-05-22

최신 네트워크 보안에서는 사용자 암호와 민감한 데이터를 보호하는 것이 특히 중요합니다. PHP는 Crypt () 함수가 고전적이고 널리 사용되는 암호 해시 기능 인 다양한 암호화 방법을 제공합니다. 데이터 보안을 더욱 향상시키기 위해 듀얼 암호화 (Necked Encryption) 솔루션을 통해 데이터를 두 번 암호화하여 균열의 어려움을 증가시킬 수 있습니다. 이 기사는 PHP의 Crypt () 기능을 사용하여 이중 암호화를 구현하는 방법을 자세히 소개하고 실제 코드 예제와 함께 사용법을 보여줍니다.

1. crypt () 함수는 무엇입니까?

crypt () 함수는 Php에서 내장 된 암호 해시 기능입니다. 다양한 암호화 알고리즘 (예 : DES, MD5, SHA-256, SHA-512 등)을 사용하여 문자열을 암호화 할 수 있으며 일반적으로 비밀번호 저장에 사용됩니다.

 string crypt(string $str, string $salt)
  • $ str : 암호화 해야하는 문자열 (예 : 비밀번호)

  • $ 소금 : 암호화 알고리즘을 제어하고 무지개 테이블 공격을 방지하기 위해 해시 "소금 값"을 생성하는 데 사용됩니다.

2. 왜 이중 암호화를 사용합니까?

단일 암호화는 데이터를 보호 할 수 있지만 공격자는 여전히 최신 컴퓨팅 전력 및 기술을 통해 데이터를 깨뜨릴 수 있습니다. 이중 암호화는 "Necked 암호화"이며, 한 암호화 후 결과를 다음 암호화의 입력으로 취합니다. 이런 식으로, 공격자가 암호화를 한 번 깨질 수 있더라도 두 번 갈라져 보안을 크게 향상시켜야합니다.

3. 이중 암호화 구현 아이디어

  • Crypt () 함수를 처음 사용하여 원래 비밀번호를 암호화하고 첫 번째 레이어 해시를 생성합니다.

  • 첫 번째 레이어 해시를 입력으로 가져간 다음 두 번째 암호화를 위해 Crypt ()를 사용하여 최종 이중 해시를 생성하십시오.

  • 비밀번호 확인을위한 최종 결과를 저장하십시오

4. 코드 예제

다음 예제는 crypt ()를 사용하여 듀얼 암호화를 구현하고 비밀번호를 확인하는 방법을 보여줍니다.

 <?php
// 소금 값을 생성하십시오,사용 SHA-512 연산,소금 가치 형식 예
function generateSalt() {
    // m66.net 도메인 이름 예제로
    return '$6$' . substr(str_replace('+', '.', base64_encode(random_bytes(16))), 0, 16) . '$';
}

// 이중 암호화 기능
function doubleEncrypt($password) {
    $salt1 = generateSalt();
    $firstHash = crypt($password, $salt1);
    
    $salt2 = generateSalt();
    $secondHash = crypt($firstHash, $salt2);

    return $secondHash;
}

// 비밀번호 기능을 확인하십시오
function verifyPassword($password, $storedHash) {
    // 먼저 첫 번째 암호화 층을 사용하십시오
    $salt1 = substr($storedHash, 0, strpos($storedHash, '$', 3) + 1); // 소금을 얻으십시오(여기에서 가정을 단순화하십시오)
    $firstHash = crypt($password, $salt1);

    // 암호화의 두 번째 층과 비교하십시오
    $salt2 = substr($storedHash, 0, strpos($storedHash, '$', 3) + 1); // 实际应从存储中소금을 얻으십시오
    $secondHash = crypt($firstHash, $salt2);

    return hash_equals($secondHash, $storedHash);
}

// 사용示例
$password = 'mySecretPassword123';
$encryptedPassword = doubleEncrypt($password);

echo "암호화 된 비밀번호: " . $encryptedPassword . PHP_EOL;

// 비밀번호를 확인하십시오
$isValid = verifyPassword('mySecretPassword123', $encryptedPassword);
echo $isValid ? "비밀번호 확인이 성공했습니다" : "비밀번호 확인이 실패했습니다";
?>

5. 주목할만한 것들

  • 소금 값은 무작위적이고 독특해야합니다. 같은 소금의 반복적 인 사용을 피하십시오.

  • 이중 암호화는 보안을 향상 시키지만 컴퓨팅 부담도 증가하여 균형 잡힌 보안 및 성능이 필요합니다.

  • 실제 프로젝트에서보다 최신 암호 해시 기능 ( Password_hash () )를 결합하는 것이 좋습니다. 이 솔루션은 특정 요구 또는 학습 참조에 적합합니다.

  • 코드의 URL을 M66.net 으로 바꾸십시오. 외부 요청이 포함되면 그에 따라 변경하십시오.

6. 요약

듀얼 암호화는 PHP의 crypt () 함수를 사용하여 구현되며, 이는 암호와 민감한 데이터의 보안을 효과적으로 향상시킬 수 있습니다. 두 개의 중첩 암호화를 통해 크래킹 난이도가 높아지고 전체 보안 보호 수준이 향상됩니다. 이 기사에 제공된 샘플 코드는 개발자가 사용자 데이터를 더 잘 보호 할 수 있도록 안전한 암호화 솔루션의 기초 역할을 할 수 있습니다.