PHP 튜토리얼

PHP 홈 PHP 소개 PHP 설치 PHP 구문 PHP 주석 PHP 변수 PHP 에코 / 인쇄 PHP 데이터 유형 PHP 문자열 PHP 숫자 PHP 수학 PHP 상수 PHP 연산자 PHP If...Else...Elseif PHP 스위치 PHP 루프 PHP 함수 PHP 배열 PHP 슈퍼글로벌 PHP 정규식

PHP 양식

PHP 양식 처리 PHP 양식 유효성 검사 PHP 양식 필요 PHP 양식 URL/이메일 PHP 양식 완성

PHP 고급

PHP 날짜 및 시간 PHP 포함 PHP 파일 처리 PHP 파일 열기/읽기 PHP 파일 생성/쓰기 PHP 파일 업로드 PHP 쿠키 PHP 세션 PHP 필터 PHP 필터 고급 PHP 콜백 함수 PHP JSON PHP 예외

PHP OOP

PHP OOP란? PHP 클래스/객체 PHP 생성자 PHP 소멸자 PHP 액세스 수정자 PHP 상속 PHP 상수 PHP 추상 클래스 PHP 인터페이스 PHP 특성 PHP 정적 메서드 PHP 정적 속성 PHP 네임스페이스 PHP 반복 가능

MySQL 데이터베이스

MySQL 데이터베이스 MySQL 연결 MySQL 생성 DB MySQL 테이블 생성 MySQL 삽입 데이터 MySQL 마지막 ID 가져오기 MySQL은 다중 삽입 MySQL 준비 MySQL 선택 데이터 MySQL 어디 MySQL 주문 기준 MySQL 데이터 삭제 MySQL 업데이트 데이터 MySQL 제한 데이터

PHP XML

PHP XML 파서 PHP SimpleXML 파서 PHP SimpleXML - 가져오기 PHP XML 국외 거주자 PHP XML DOM

PHP - AJAX

AJAX 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 라이브 검색 AJAX 투표

PHP 예제

PHP 예제 PHP 컴파일러 PHP 퀴즈 PHP 연습 PHP 인증서

PHP 참조

PHP 개요 PHP 배열 PHP 캘린더 PHP 날짜 PHP 디렉토리 PHP 오류 PHP 예외 PHP 파일 시스템 PHP 필터 PHP FTP PHP JSON PHP 키워드 PHP 라이브러리 XML PHP 메일 PHP 수학 PHP 기타 PHP MySQLi PHP 네트워크 PHP 출력 제어 PHP 정규식 PHP SimpleXML PHP 스트림 PHP 문자열 PHP 변수 처리 PHP XML 파서 PHP 우편번호 PHP 시간대

PHP crypt() 함수


❮ PHP 문자열 참조

정의 및 사용

crypt() 함수는 DES, Blowfish 또는 MD5 알고리즘을 사용하여 해시된 문자열을 반환합니다.

이 기능은 운영 체제에 따라 다르게 작동합니다. PHP는 사용 가능한 알고리즘과 설치 시 사용할 알고리즘을 확인합니다.

salt 매개변수는 선택 사항입니다. 그러나 crypt()는 솔트 없이 약한 암호를 생성합니다. 더 나은 보안을 위해 충분히 강한 솔트를 지정해야 합니다.

crypt() 함수와 함께 사용되는 몇 가지 상수가 있습니다. 이러한 상수의 값은 PHP가 설치될 때 설정됩니다.

상수:

  • [CRYPT_STD_DES] - 알파벳 "./0-9A-Za-z"의 두 문자 솔트가 있는 표준 DES 기반 해시입니다. 솔트에 잘못된 문자를 사용하면 이 기능이 실패합니다.
  • [CRYPT_EXT_DES] - 밑줄 다음에 4바이트의 반복 횟수와 4바이트의 소금으로 구성된 9자 솔트가 있는 확장 DES 기반 해시입니다. 이들은 인쇄 가능한 문자로 인코딩되며, 문자당 6비트, 최하위 문자가 먼저입니다. 0에서 63까지의 값은 "./0-9A-Za-z"로 인코딩됩니다. 솔트에 잘못된 문자를 사용하면 함수가 실패합니다.
  • [CRYPT_MD5] - $1$로 시작하는 12자 솔트로 MD5 해싱
  • [CRYPT_BLOWFISH] - $2a$, $2x$ 또는 $2y$로 시작하는 솔트, 두 자리 비용 매개변수 "$" 및 알파벳 "./0-9A-Za-z"의 22자를 사용한 복어 해싱 . 알파벳 이외의 문자를 사용하면 이 함수가 길이가 0인 문자열을 반환합니다. "$" 매개변수는 기본 Blowfish-bashed 해싱 알고리즘 측정기에 대한 반복 횟수의 밑이 2인 로그이며 04-31 범위에 있어야 합니다. 이 범위를 벗어나는 값을 사용하면 함수가 실패합니다.
  • [CRYPT_SHA_256] - $5$로 시작하는 16자 솔트를 포함하는 SHA-256 해시. 솔트 문자열이 "rounds=<N>$"로 시작하면 N의 숫자 값은 Blowfish의 비용 매개변수와 마찬가지로 해싱 루프가 실행되어야 하는 횟수를 나타내는 데 사용됩니다. 기본 라운드 수는 5000이며 최소 1000, 최대 999,999,999입니다. 이 범위를 벗어난 N 선택은 가장 가까운 제한으로 잘립니다.
  • [CRYPT_SHA_512] - $6$로 시작하는 16자 솔트가 있는 SHA-512 해시. 솔트 문자열이 "rounds=<N>$"로 시작하면 N의 숫자 값은 Blowfish의 비용 매개변수와 마찬가지로 해싱 루프가 실행되어야 하는 횟수를 나타내는 데 사용됩니다. 기본 라운드 수는 5000이며 최소 1000, 최대 999,999,999입니다. 이 범위를 벗어난 N 선택은 가장 가까운 제한으로 잘립니다.

이 함수가 여러 알고리즘을 지원하는 시스템에서 위의 상수는 지원되는 경우 "1"로 설정되고 지원되지 않는 경우 "0"으로 설정됩니다.

참고: 암호 해독 기능이 없습니다. crypt() 함수는 단방향 알고리즘을 사용합니다.


통사론

crypt(str,salt)

매개변수 값

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


기술적 세부 사항

반환 값: 인코딩된 문자열 또는 13자보다 짧고 실패 시 솔트와 다른 문자열을 반환합니다.
PHP 버전: 4+
변경 로그: PHP 5.6.0 - 솔트 가 생략 되면 E_NOTICE 보안 경고를 표시합니다 .
PHP 5.3.7 - $2x$ 및 $2y$ Blowfish 모드가 추가되었습니다.
PHP 5.3.2 - SHA-256 및 SHA-512가 추가되었습니다. 잘못된 라운드에서 Blowfish 동작이 DES로 되돌아가는 대신 "실패" 문자열("*0" 또는 "*1")을 반환하는 문제를 수정했습니다.
PHP 5.3.0 - 이제 PHP는 MD5 crypt, Standard DES, Extended DES 및 Blowfish 알고리즘에 대한 자체 구현을 포함하며 시스템에서 하나 이상의 알고리즘에 대한 지원이 부족한 경우 이를 사용합니다.

더 많은 예

예시

이 예에서는 다양한 알고리즘을 테스트합니다.

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

위 코드의 출력은 다음과 같을 수 있습니다(운영 체제에 따라 다름).

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ PHP 문자열 참조