Forum und email

crypt

(PHP 4, PHP 5)

crypt — 단방향 문자열 암호화(해슁).

설명

string crypt ( string $str [, string $salt ] )

crypt()는 표준 유닉스 DES 기반 암호화 알고리즘이나 시스템에서 사용할 수 있는 다양한 알고리즘을 사용하여 암호화한 문자열을 반환합니다. 인자는 암화화할 문자열과 암호화의 베이스로 사용하는 선택적인 salt를 가집니다. 자세한 정보는 ctype 함수에 관한 유닉스 man 페이지를 참고하십시오.

salt 인자를 지정하지 않으면, PHP가 무작위로 생성합니다.

몇몇 운영체제는 한가지 이상의 암호화 방식을 제공합니다. 사실, 종종 표준 DES 기반 암호화는 MD5 기반 암호화 알고리즘으로 대체되기도 합니다. 암호화 타입은 slat 인자에 의해 변경됩니다. 설치시에, PHP는 사용할 수 있는 암호화 함수를 판단하고, 다른 암호화 방식을 위한 salt를 받아들입니다. salt를 지정하지 않으면, PHP는 기본값으로 두 문자 salt를 자동 생성합니다. 단, 시스템의 기본 암호화 방식이 MD5라면, 무작위의 MD5 호환 salt를 생성합니다. PHP는 시스템에 일반적인 두 문자 salt를 적용할지 더 긴 12 문자 salt를 적용할 수 있는지를 알려주는 CRYPT_SALT_LENGTH 상수를 설정합니다.

자동 생성된 salt를 사용한다면, salt가 한번만 생성되는 점에 주의하십시오. 이 함수를 재귀 호출한다면, 표현과 보안 양쪽에 영향을 미칩니다.

표준 DES 기반 암호화 crypt()는 처음 두 문자가 salt 인 문자열을 출력합니다. 또한 str 의 처음 8 문자만 사용하기에, 같은 8문자로 시작하는 긴 문자열은 (같은 salt를 사용하는 한) 같은 결과를 생성합니다.

crypt() 함수가 다양한 암호화 방식을 지원하는 시스템에서, 주어진 방식의 사용 가능 여부에 따라 다음 상수들이 0이나 1로 설정됩니다:

  • CRYPT_STD_DES - 2문자 salt를 가지는 표준 DES 기반 암호화
  • CRYPT_EXT_DES - 9문자 salt를 가지는 확장 DES 기반 암호화
  • CRYPT_MD5 - $1$로 시작하는 12문자 salt를 가지는 MD5 암호화
  • CRYPT_BLOWFISH - $2$로 시작하는 16문자 salt를 가지는 Blowfish 암호화

Note: crypt()는 단방향 알고리즘을 사용하기 때문에, decrypt 함수는 존재하지 않습니다.

Example#1 crypt() 예제

<?php
$password 
crypt("My1sTpassword"); // salt가 생성됩니다.

# 패스워드를 비교할 때, 다른 해슁 알고리즘을 사용하는 문제를
# 피하기 위해서, crypt()가 생성한 전체 결과를 salt로 주어야
# 합니다. (위에서 밝혔듯이, 표준 DES 기반 암호 해슁은 2 문자
# salt를 사용하지만, MD5 기반 해슁은 12 문자를 사용합니다)
if (crypt($user_input$password) == $password) {
   echo 
"패스워드 확인!";
}
?>

참고: md5(), Mcrypt 확장.