PHP의 토굴 () 함수
정의 및 사용
토굴 () 함수는 문자열을 암호화하는 DES, 복어, 또는 MD5 알고리즘의 사용을 반환합니다.
다른 운영 체제 기능의 다른 동작에서, 어떤 운영 시스템은 알고리즘의 하나 이상의 형태를 지원한다. 설치시, PHP는 무엇을 사용할 수 있으며 어떤 알고리즘 알고리즘을 확인합니다.
정확한 알고리즘은 소금 인수의 형식과 길이에 의존한다. 염 문자열을 생성하는 특정 암호화 방식과 특정 문자열 수를 증가시켜보다 안전한 암호화 할 수있다.
여기에 몇 가지 상수와 토굴 () 함수가 사용됩니다입니다. 상수 값은 PHP가 설치시에 설정됩니다.
상수 :
- [CRYPT_SALT_LENGTH] - 암호 길이 기본. 표준 DES 암호화 2의 길이를 사용하여
- [CRYPT_STD_DES] - DES 암호화 알파벳 "./0-9A-Za-z"에서이 문자 소금 표준을 기반으로. 기능으로 이어질 것입니다 소금에 잘못된 문자가 실패했습니다.
- [CRYPT_EXT_DES] - DES 기반 암호화는 반복 횟수의 4 바이트와 소금 성분의 4 바이트 뒤에 밑줄 염 9 문자를 확장. 이들은 첫째, 인쇄 가능한 문자로 6, 최하위 문자를 각각 인코딩됩니다. 0-63 값은 "./0-9A-Za-z"로 인코딩됩니다. 기능으로 이어질 것입니다 소금에 잘못된 문자가 실패했습니다.
- [CRYPT_MD5] - MD5 암호화는 $ 1 $로 시작, 소금 (12) 문자가 있습니다.
- [CRYPT_BLOWFISH] - 복어 암호화뿐만 아니라 "./0-9A-Za-z"알파벳에서 $의 2A의 $, $ 2 배 $ 또는 $ (2Y) 소금의 $ 시작, 두 자릿수 비용 매개 변수 "$"가 22 자. 함수가 0의 문자열을 반환 트리거 알파벳 문자 이외의 사용하십시오. "$"파라미터 복어 해싱 알고리즘은 04-31 범위에 있어야 반복의 수의베이스 2 로그이다. 기능이 실패에이 범위를 벗어나는 값이 이어질 것입니다.
- [CRYPT_SHA_256] - SHA-256 암호화는 $ 5 $로 시작, 소금 (16) 문자가 있습니다. 만일 염 문자열 "발사 = <N> $"시작되면 해시 루프를 나타내는데 사용 N 배의 디지털 값이 선정 된 파라미터 복어 유사하다 실행된다. 사이클의 기본 번호 5000, 최소치는 1000이고, 최대는 999999999이다. N은이 범위를 벗어난 값이 가장 가까운 경계 값으로 변환 될 것이다.
- [CRYPT_SHA_512] - SHA-512 암호화는 $ (6) $로 시작, 소금 (16) 문자가 있습니다. 만일 염 문자열 "발사 = <N> $"시작되면 해시 루프를 나타내는데 사용 N 배의 디지털 값이 선정 된 파라미터 복어 유사하다 실행된다. 사이클의 기본 번호 5000, 최소치는 1000이고, 최대는 999999999이다. N은이 범위를 벗어난 값이 가장 가까운 경계 값으로 변환 될 것이다.
이 기능은 여러 알고리즘 시스템을 지원에 일정 이상 지원하는 경우, 그렇지 않으면 설정, "1"로 설정되어 "0"
주 : 해당 암호 해독 기능이 없습니다.굴 () 함수는 단방향 알고리즘을 사용한다.
문법
crypt( str,salt )
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
기술 세부 사항
반환 값 : | 미만 13 문자를 반환하지 않으면 반환, 문자열을 암호화 문자열의 보장은 소금 다릅니다. |
---|---|
PHP 버전 : | 4+ |
업데이트 로그 : | PHP 5.3.7에서 높은 잠재적 인 공격을 처리하기 위해 $ 2 배 $와 $ 2Y $ 복어 모드를 추가 할 수 있습니다. PHP 5.3.2에서, 상수 SHA-256 및 SHA-512을 추가합니다. 이후 PHP 5.3.2 이후, 잘못된 루프에서 복어는 DES 다시 ( "* 0"또는 "* 1") "실패"문자열을 반환하는 대신합니다. PHP 5.3.0부터 PHP는 표준 DES, 복어를 달성하고 달성하기 위해 DES 알고리즘을 확장 달성하기 위해 MD5 암호화와 함께 제공됩니다. 시스템이 지원하지 않는 경우 이러한 알고리즘 PHP 자신의 알고리즘을 사용한다. |
예
예 1
이 예에서, 우리는 다른 알고리즘을 테스트합니다 :
<?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 $5$. 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.";
}
?>
// 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 $5$. 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.
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 문자열 참조