현재 위치: > 최신 기사 목록> php hash () 함수를 사용하여 HMAC를 생성합니다 (해시 기반 메시지 인증 코드)

php hash () 함수를 사용하여 HMAC를 생성합니다 (해시 기반 메시지 인증 코드)

gitbox 2025-07-01

네트워크 보안 및 데이터 무결성 검증에서 HMAC (해시 기반 메시지 인증 코드)는 일반적으로 사용되는 효과적인 기술입니다. 해시 함수와 키를 결합하여 메시지의 무결성 및 신원 인증을 확인합니다. PHP의 내장 Hash_hmac () 함수는 HMAC를 생성하는 편리한 도구를 제공하지만이 기사는보다 기본적인 해시 () 함수를 사용하여 HMAC를 수동으로 구현하는 방법을 소개합니다.

HMAC 란 무엇입니까?

HMAC의 핵심 아이디어는 메시지 전후에 키를 스플 라이스 한 다음 스플 라이스 다음에 문자열을 해시하는 것입니다. 간단한 해시 값과 비교할 때 HMAC는 메시지가 변조되는 것을 효과적으로 방지하고 쉽게 위조 할 수 없습니다.

HMAC 계산 공식 :

 HMAC(key, message) = hash((key ⊕ opad) || hash((key ⊕ ipad) || message))

안에:

  • || 연결 작동을 의미합니다

  • bitwise xor를 나타냅니다

  • OPAD 는 외부 충전, 0x5c 반복 채우기입니다

  • iPad 는 내부 채우기, 0x36 반복 채우기입니다

php에서 hash () 함수로 HMAC 구현

다음은 php hash () 함수를 사용하여 HMAC를 수동으로 구현하는 방법을 보여줍니다.

 <?php
function hmac_hash($algo, $key, $data) {
    $blocksize = 64; // 최대hash함수 블록 크기는입니다64바이트
    if (strlen($key) > $blocksize) {
        $key = hash($algo, $key, true); // 키가 너무 길면,첫 번째hash고정 길이 이진 문자열을 형성합니다
    }
    $key = str_pad($key, $blocksize, chr(0x00)); // 키를 블록 크기로 채우십시오

    $ipad = str_repeat(chr(0x36), $blocksize);
    $opad = str_repeat(chr(0x5c), $blocksize);

    $inner = $key ^ $ipad;
    $outer = $key ^ $opad;

    $inner_hash = hash($algo, $inner . $data, true); // 내부 해시,출력 바이너리 형식
    $hmac = hash($algo, $outer . $inner_hash);

    return $hmac;
}

// 시험
$key = "secretkey";
$message = "The quick brown fox jumps over the lazy dog";

echo "HMAC-SHA256: " . hmac_hash('sha256', $key, $message);
?>

위의 코드는 SHA-256 알고리즘을 사용하여 메시지 및 키에서 HMAC 계산을 수행하고 16 진 문자열을 반환합니다.

실제 응용 프로그램의 메모

  • 보다 효율적이고 안전한 PHP와 함께 제공되는 Hash_hmac () 함수를 사용하는 것이 좋습니다.

  • 키 길이는 일반적으로 해시 블록 크기와 동일하도록 권장됩니다.

  • 이진 출력 사용 (세 번째 매개 변수는 true 로 설정 됨)은 스 플라이 싱 작업에 도움이됩니다.

  • HMAC는 주로 메시지 인증에 사용되며 키는 안전하게 관리해야합니다.

요약

PHP는 이미 편리한 hash_hmac () 함수를 가지고 있지만 HMAC를 구현하기 위해 Basic Hash () 함수를 사용하는 원리를 이해하고 마스터하면 보안 해시 메커니즘을 더 잘 이해하고 안전한 프로그래밍 기능을 향상시키는 데 도움이됩니다.

더 알고 싶다면 https://gitbox.net 관련 리소스를 방문 할 수 있습니다.