>백엔드 개발 >PHP 튜토리얼 >PHP의 해싱 함수

PHP의 해싱 함수

PHPz
PHPz원래의
2024-08-29 12:47:031197검색

PHP의 해싱 함수는 문자열의 문자로부터 측정된 명확한 값의 형태로 문자열을 나타내기 위해 미리 정의되어 사용되는 특수한 방법입니다. 이는 암호화 알고리즘 및 데이터베이스 항목에 대한 인덱스 값 표현으로 널리 사용됩니다. 데이터 암호화 과정에서 가장 일반적으로 사용되는 해싱 알고리즘 유형은 SHA1()과 MD5()입니다. PHP에서 해싱 함수는 Hash_equals, Hash_final, Hash_init 및 Hash_copy와 같은 네 가지 유형이 있습니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

해싱 함수는 어떻게 작동하나요?

PHP는 서버 측 프로그래밍 언어이며 주요 역할은 특정 애플리케이션에 필요한 백엔드 기능을 처리해야 한다는 것입니다. 이 과정에서 취약점이 데이터를 쉽게 악용할 수 있으므로 인증이 중요한 역할을 합니다. 데이터를 보호하는 한 가지 방법은 데이터를 원래의 형태로 데이터베이스에 저장하는 것이지만, 이로 인해 침입자/권한 없는 사람이 데이터를 쉽게 가져갈 수 있고 손상될 수 있는 상황이 발생할 수 있습니다. 이러한 상황은 해싱 함수를 사용하면 쉽게 처리할 수 있습니다.

해시 함수는 의미를 변경하지 않고 데이터를 실제 형식으로 암호화합니다. 따라서 사용자가 실제 형식으로 데이터를 입력하면 데이터가 백엔드에서 암호화되어 데이터 프로세스의 인증 및 승인이 발생합니다. 가장 일반적으로 사용되는 해시 알고리즘은 md5(), sha1() 및 소수의 해시 함수입니다. 이러한 알고리즘은 개발자가 사용자가 입력한 데이터가 올바른지 또는 더 이상 프로세스를 진행하지 않도록 인증하는 데 사용됩니다.

1. MD5()

이 알고리즘은 md5 해시, 즉 특정 문자열의 16자 또는 32자 16진수 해시를 계산하는 강력한 해싱 알고리즘 중 하나입니다. 전달된 문자열은 암호화된 16진수 형식으로 변환됩니다.

구문:

string md5 ($string, $getRawOutput)

위 구문은 $string을 입력 문자열로 나타냅니다. 원시 출력은 개발자가 16비트 또는 32비트로 변환하기를 원하므로 선택적 입력입니다. 16비트를 활성화해야 하는 경우 TRUE Boolean으로 설정하고 함수에 전달해야 합니다. 설정하지 않으면 기본값인 32비트가 자동으로 설정됩니다.

예:

md5 (EduCBA, TRUE)

2. SHA1()

이 알고리즘은 sha1 해시, 즉 특정 문자열의 20자 바이너리 형식 또는 40자 16진수의 해시를 계산하는 강력한 해싱 알고리즘 중 하나입니다. 전달된 문자열은 암호화된 16진수 형식으로 변환됩니다.

구문:

string sha1 ($string, $getRawOutput)

위 구문은 $string을 입력 문자열로 나타냅니다. 원시 출력은 개발자가 20비트 또는 40비트가 되기를 원하므로 선택적 입력입니다. 20비트를 활성화해야 하는 경우 TRUE Boolean으로 설정하고 함수에 전달해야 합니다. 설정하지 않으면 기본값인 40비트가 자동으로 설정됩니다.

예:

sha1 (EduCBA, TRUE)

PHP의 해싱 함수

아래 나열된 것은 PHP에서 데이터를 원본 형식에서 해시 형식으로 암호화/변환하는 데 사용되는 몇 가지 해싱 함수입니다.

1. 해시_같음

이 함수는 두 문자열이 같은지 여부를 동시에 비교합니다. 이 함수는 문자열이 같으면 TRUE를 반환하고 문자열이 같지 않으면 FALSE를 반환합니다. 문자열을 비교하려면 두 인수가 동일해야 합니다. 그렇지 않으면 문자열을 알파벳순으로 비교하지 않고도 즉시 false를 반환하며 때로는 타이밍 공격의 경우 문자열 길이가 드러날 수도 있습니다.

2. 해시_최종

이 함수는 이 함수에 전달된 입력 문자열의 해시 다이제스트를 반환합니다. 원시 출력이 TRUE로 설정되면 원시 이진 데이터가 제공되고, FALSE로 설정되면 소문자 16진수 숫자가 제공됩니다. 이 함수는 계산된 문자열의 16진수 다이제스트를 출력으로 반환합니다.

3. 해시_초기

이 함수는 해싱 알고리즘, 즉 md5(), sha() 등과 함께 사용됩니다. 이 함수는 해싱 알고리즘과 함께 hash_update(), hash final() 등과 함께 사용할 출력을 생성합니다. hash_init는 문자열이나 변수에 저장되며 함수 중 하나에 전달됩니다.

4. 해시_복사

해싱 컨텍스트를 복사하는 데 사용되는 함수입니다. 함수에 입력으로 전달된 문자열은 hash_init() 함수에 사용된 알고리즘 중 하나에 의해 해시되고 해당 출력은 이 함수에 전달된 해시된 문자열이 됩니다. 이 함수는 hash_init 함수에 의해 제공된 출력의 해시된 형식을 반환합니다.

Examples of Hashing Function in PHP

The following is a list of hashing function in PHP explained in detail,

Example #1

Code:

<?php
$c = hash_init("md5");
hash_update($c, "content");
$copy_c = hash_copy($c);
echo hash_final($c);
hash_update($copy_c, "content");
echo hash_final($copy_c), "\n";
?>

Output:

PHP의 해싱 함수

Example #2

Code:

<?php
$expected  = crypt('leela123', '$2a$07$user$');
$right   = crypt('leela123', '$2a$07$user$');
$wrong = crypt('leeeela233',  '$2a$07$usedwrongstring$');
var_dump(hash_equals($expected, $right));
var_dump(hash_equals($expected, $wrong));
?>

Output:

PHP의 해싱 함수

Example #3

Code:

<?php
$hash = hash_init('sha1');
hash_update($hash, 'This is an example of PHP Hash function');
echo hash_final($hash);
?>

Output:

PHP의 해싱 함수

Conclusion

In this article, we discussed what is hashing and its various algorithms. Also, we discussed a few hashing functions used in PHP to encrypt the data to prevent malicious and vulnerable attacks. Because of these attacks, the data is not secure and loss of data occurs. So, the hashing technique was introduced so that there will be no loss of data and it will be secured by various attacks.

위 내용은 PHP의 해싱 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 문자열 함수다음 기사:PHP 문자열 함수