현재 위치: > 최신 기사 목록> PHP에서 hash_final 및 hash_hmac을 사용하는 방법은 무엇입니까?

PHP에서 hash_final 및 hash_hmac을 사용하는 방법은 무엇입니까?

gitbox 2025-05-27

PHP 프로그래밍에서 해시 알고리즘은 데이터 암호화 및 검증의 핵심 부분입니다. 특히 민감한 정보를 처리 할 때 해시 알고리즘의 합리적인 사용은 시스템의 보안을 효과적으로 향상시킬 수 있습니다. PHP에서 Hash_final 함수와 Hash_hmac 함수의 조합은 더 강력한 해시 처리 기능을 제공 할 수 있습니다. 이 기사는 PHP 에서이 두 기능을 결합하여 더 안전한 해싱 처리를 달성하는 방법을 자세히 소개합니다.

1. Hash_finalHash_hmac 에 대한 기본 소개

hash_hmac 함수

Hash_hmac 은 PHP의 내장 함수로 지정된 해시 알고리즘을 사용하여 주어진 키 및 메시지 컨텐츠를 사용하여 해시 값을 생성 할 수 있습니다. HMAC (HASH 기반 메시지 인증 코드)는 데이터 무결성 검증 및 인증에 널리 사용되는 해시 함수를 기반으로 한 메시지 인증 코드입니다.

함수 구문 :

 hash_hmac(string $algo, string $data, string $key, bool $raw_output = false): string
  • $ Algo : 해싱 알고리즘 (예 : SHA256 , MD5 등)을 지정하십시오.

  • $ 데이터 : 해싱이 필요한 메시지 데이터.

  • $ 키 : 해시 계산에 사용되는 키.

  • $ raw_output : true 설정되면 원시 바이너리 데이터는 출력입니다.

해시 함수

Hash_Final은 스트리밍 해시 계산을 사용할 때 최종 해시 값을 얻는 PHP의 또 다른 기능입니다. Hash_init을 통해 해시 컨텍스트를 초기화 한 후 Hash_update를 통해 데이터를 추가 한 다음 Hash_Final을 호출하여 최종 해시 값을 얻을 수 있습니다.

함수 구문 :

 hash_final(resource $context, bool $raw_output = false): string
  • $ 컨텍스트 : Hash_init 에 의해 반환 된 해시 컨텍스트.

  • $ raw_output : 원시 바이너리 데이터를 반환할지 여부를 지정합니다.

2. Hash_hmacHash_final을 사용하여보다 안전한 해시 처리를 달성하십시오.

데이터 보안을 개선하기 위해, 특히 민감한 데이터 전송 및 스토리지 일 때보다 복잡한 해시 처리를 위해 Hash_HMACHASH_Final을 사용할 수 있습니다. 특정 단계는 다음과 같습니다.

1 단계 : 해시 컨텍스트를 초기화합니다

먼저 Hash_init을 사용하여 해시 컨텍스트를 초기화하여 후속 해시 작업을 준비합니다. 여기에서 SHA256 또는 기타 강력한 해싱 알고리즘을 사용하도록 선택할 수 있습니다.

 $context = hash_init('sha256');

2 단계 : 데이터 업데이트

그런 다음 Hash_update를 사용하여 해시가 필요한 데이터를 해시 컨텍스트에 단계별로 추가하십시오. 차례로 여러 데이터 블록을 추가 할 수 있습니다.

 $data = "Sensitive data to hash";
hash_update($context, $data);

3 단계 : Hash_hmac 과 함께 암호화

보안을 더욱 향상시키기 위해 HASH_HMAC를 사용하여 HASH_HMAC와 암호화하여 인증과 함께 해시 값을 생성 할 수 있습니다. 이것은 중간 중간 공격과 같은 보안 문제를 예방하는 데 매우 중요합니다.

 $key = "secret-key";
$hmac_hash = hash_hmac('sha256', $data, $key);

4 단계 : 최종 해시 값을 얻으십시오

마지막으로 Hash_Final을 사용하여 해시 컨텍스트에서 최종 해시 값을 얻으십시오. $ raw_outputtrue 로 설정되면 이진 데이터가 반환됩니다.

 $final_hash = hash_final($context, false);  // 최종 해시 값을 얻으십시오(16가격)

5 단계 : 두 해시 결과를 병합하십시오

해시의 보안을 향상시키기 위해 Hash_hmacHash_final 의 결과를 함께 사용할 수 있습니다. 예를 들어, 두 개의 해시 결과를 병합하고 해시 처리를 다시 수행하십시오.

 $combined_hash = hash('sha256', $final_hash . $hmac_hash);

이러한 방식으로 HMAC 및 스트리밍 해싱을 결합한 최종 결과를 얻으므로 데이터의 무결성을 보장 할뿐만 아니라 데이터가 변조되거나 위조되지 않도록합니다.

3. 샘플 코드

다음은 PHP에서 HASH_FINAL 기능과 HASH_HMAC를 결합하여보다 안전한 해시 처리를 달성하는 방법을 보여주는 완전한 코드 예제입니다.

 <?php
// 해시 컨텍스트를 초기화합니다
$context = hash_init('sha256');

// 해싱이 필요한 데이터
$data = "Sensitive data to hash";

// 해시 컨텍스트로 데이터를 업데이트하십시오
hash_update($context, $data);

// 수행 할 키를 설정하십시오HMAC암호화
$key = "secret-key";
$hmac_hash = hash_hmac('sha256', $data, $key);

// 최종 해시 값을 얻으십시오
$final_hash = hash_final($context, false);  // 얻다16가격字符串

// 해시 결과를 병합하고 최종 해시를 생성하십시오
$combined_hash = hash('sha256', $final_hash . $hmac_hash);

// 최종 해시 값을 출력하십시오
echo "Final Hash: " . $combined_hash;
?>

4. 결론

Hash_finalHash_hmac 의 조합은 특히 민감한 데이터를 처리 할 때 해시 처리의 보안을 크게 향상시킬 수 있습니다. Hash_hmac은 해시 프로세스에 주요 인증 레이어를 추가 할 수있는 반면 Hash_final은 해시 데이터를 스트리밍하는 방법을 제공합니다. 이 둘을 결합하면 데이터의 무결성과 보안을 더 잘 보호하여 전송 및 스토리지 중에 데이터가 조작되지 않도록합니다.