정의 및 사용법
crypt() 함수는 DES, Blowfish 또는 MD5 알고리즘을 사용하여 암호화된 문자열을 반환합니다.
이 함수는 운영 체제에 따라 다르게 작동하며 일부 운영 체제에서는 둘 이상의 알고리즘 유형을 지원합니다. 설치 시 PHP는 어떤 알고리즘을 사용할 수 있는지, 어떤 알고리즘이 사용되는지 확인합니다.
정확한 알고리즘은 솔트 매개변수의 형식과 길이에 따라 다릅니다. 솔트는 특정 암호화 방법을 사용하여 특정 문자열에서 생성되는 문자열 수를 늘려 암호화를 더욱 안전하게 만들 수 있습니다.
다음은 crypt() 함수에 사용되는 상수입니다. 이러한 상수 값은 설치 중에 PHP에 의해 설정됩니다.
상수:
[CRYPT_SALT_LENGTH] - 기본 암호화 길이. 길이가 2
인 표준 DES 암호화를 사용합니다.[CRYPT_STD_DES] - 알파벳 "./0-9A-Za-z"의 2자리 솔트를 사용하는 표준 DES 기반 암호화입니다. 솔트에 유효하지 않은 문자를 사용하면 함수가 실패하게 됩니다.
[CRYPT_EXT_DES] - 밑줄 1개와 그 뒤에 4바이트 반복 번호 및 4바이트 솔트로 구성된 9자리 솔트를 사용하는 확장 DES 기반 암호화입니다. 이는 인쇄 가능한 문자(각각 6비트)로 최하위 문자부터 인코딩됩니다. 0~63의 값은 "./0-9A-Za-z"로 인코딩됩니다. 솔트에 유효하지 않은 문자를 사용하면 함수가 실패하게 됩니다.
[CRYPT_MD5] - $1$로 시작하는 12자리 솔트를 사용한 MD5 암호화입니다.
[CRYPT_BLOWFISH] - Blowfish 암호화에는 $2a$, $2x$ 또는 $2y$로 시작하는 솔트, 두 자리 비용 매개변수 "$" 및 알파벳 "./0-9A- 22자)가 있습니다. Za-z에서." 알파벳 이외의 문자를 사용하면 함수는 길이가 0인 문자열을 반환합니다. "$" 인수는 Blowfish 기반 해싱 알고리즘의 반복 횟수에 대한 기본 2 로그이며 04-31 범위에 있어야 합니다. 이 범위를 벗어나는 값을 사용하면 기능이 실패하게 됩니다.
[CRYPT_SHA_256] - 16자 솔트를 사용한 SHA-256 암호화, 최저 $5$. 솔트 문자열이 "rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$"로 시작하는 경우 숫자 값 N은 Blowfish의 비용 매개변수와 유사하게 해싱 라운드가 실행되는 횟수를 나타내는 데 사용됩니다. 기본 루프 수는 5000이고, 최소값은 1000, 최대값은 999,999,999입니다. 이 범위를 벗어난 N 값은 가장 가까운 경계 값으로 변환됩니다.
[CRYPT_SHA_512] - 16자 솔트를 사용한 SHA-512 암호화, 최저 $6$. 솔트 문자열이 "rounds=ecb5fc74e9cd1f249d43a2bdbf2f239d$"로 시작하는 경우 숫자 값 N은 Blowfish의 비용 매개변수와 유사하게 해싱 라운드가 실행되는 횟수를 나타내는 데 사용됩니다. 기본 루프 수는 5000이고, 최소값은 1000, 최대값은 999,999,999입니다. 이 범위를 벗어난 N 값은 가장 가까운 경계 값으로 변환됩니다.
이 기능이 여러 알고리즘을 지원하는 시스템에서는 위의 상수가 지원되는 경우 "1"로 설정되고 지원되지 않는 경우 "0"으로 설정됩니다.
Note: 해당 복호화 기능이 없습니다. crypt() 함수는 단방향 알고리즘을 사용합니다.
Syntax
crypt(str,salt)
매개변수 설명
str 필수입니다. 인코딩할 문자열을 지정합니다.
소금 선택사항. 인코딩을 더욱 안전하게 만들기 위해 인코딩되는 문자 수를 늘리는 데 사용되는 문자열입니다. 솔트 인수가 제공되지 않으면 함수가 호출될 때마다 무작위로 생성됩니다.
기술 세부정보
반환값: 암호화된 문자열을 반환하며, 실패할 경우 솔트와 다른 13자 미만의 문자열을 반환합니다.
PHP 버전: 4+
更新日志: 在 PHP 5.3.7 中,新增了 $2x$ 和 $2y$ Blowfish 模式,用来处理潜在的高位攻击。
在 PHP 5.3.2 中,新增了常量 SHA-256 和 SHA-512。
自 PHP 5.3.2 起,Blowfish 在无效的循环将返回 "failure" 字符串("*0" 或 "*1"),而不是后退到 DES。
自 PHP 5.3.0 起,PHP 自带 MD5 加密实现、标准 DES 实现、扩展 DES 实现以及 Blowfish 算法。如果系统不支持上述的算法,将使用 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."; } ?>
上面的代码输出如下(取决于操作系统):
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 $str = '应用crypt()函数进行单向加密!'; //声明字符串变量$str echo '加密前$str的值为:'.$str; $crypttostr = crypt($str); //对变量$str加密 echo '<p>加密后$str的值为:'.$crypttostr; //输出加密后的变量 ?>
二、运行结果
参数不带salt,每次加密得出的密文都不一样。
加密前$str的值为:应用crypt()函数进行单向加密!
加密后$str的值为:$1$Re4.Gg4.$D.yd00xX0fFfIfp6KrKGN0
위 내용은 php는 DES, Blowfish 및 MD5 알고리즘 함수 crypt()를 사용하여 암호화된 문자열을 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!