crypt

(PHP 4, PHP 5, PHP 7)

crypt�����ַ���ɢ��

˵��

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

crypt() ����һ�����ڱ�׼ UNIX DES �㷨��ϵͳ���������õ�����㷨��ɢ���ַ�����

salt �����ǿ�ѡ�ġ�Ȼ�������û��salt�Ļ���crypt()���������Ļ��������롣 php 5.6��֮��İ汾����û������������׳�һ�� E_NOTICE ����Ĵ���Ϊ�˸��õİ�ȫ�ԣ���ȷ��ָ��һ���㹻ǿ�ȵ���ֵ��

password_hash()ʹ����һ��ǿ�Ĺ�ϣ�㷨���������㹻ǿ����ֵ�����һ��Զ����к��ʵ��ִΡ�password_hash()��crypt()��һ���򵥷�װ��������ȫ�����е������ϣ���ݡ��Ƽ�ʹ��password_hash()��

��Щϵͳ֧�ֲ�ֹһ��ɢ�����͡�ʵ���ϣ���ʱ�򣬻��� MD5 ���㷨������������ڱ�׼ DES ���㷨������ɢ����������ֵ������������ 5.3 ֮ǰ��PHP �ڰ�װʱ����ϵͳ�� crypt() �������õ��㷨�����û���ṩ��ֵ��PHP ���Զ�����һ�� 2 ���ַ���DES������ 12 ���ַ���MD5������ֵ ����ȡ���� MD5 crypt() �Ŀ����ԡ�PHP ������һ����Ϊ CRYPT_SALT_LENGTH �ij�����������ʾ����ɢ��������������ֵ��

���ڱ�׼ DES �㷨�� crypt() ��������ݵĿ�ʼλ�÷��������ַ�����ֵ����Ҳֻʹ�� str �Ŀ�ʼ 8 ���ַ������Ը���������ͬ 8 ���ַ���ʼ���ַ���Ҳ��������ͬ�Ľ������ʹ������ͬ����ֵʱ����

�� crypt() ����֧�ֶ���ɢ�е�ϵͳ�ϣ�����ij���������Ӧ�������Ƿ���ñ�����Ϊ 0 �� 1��

  • CRYPT_STD_DES - ���ڱ�׼ DES �㷨��ɢ��ʹ�� "./0-9A-Za-z" �ַ��е������ַ���Ϊ��ֵ������ֵ��ʹ�÷Ƿ����ַ������� crypt() ʧ�ܡ�
  • CRYPT_EXT_DES - ��չ�Ļ��� DES �㷨��ɢ�С�����ֵΪ 9 ���ַ����ַ������� 1 ���»��ߺ������ 4 �ֽ�ѭ�������� 4 �ֽ���ֵ��ɡ����DZ�����ɿɴ�ӡ�ַ���ÿ���ַ� 6 λ����Чλ���ٵ����ȡ�0 �� 63 ������Ϊ "./0-9A-Za-z"������ֵ��ʹ�÷Ƿ����ַ������� crypt() ʧ�ܡ�
  • CRYPT_MD5 - MD5 ɢ��ʹ��һ���� $1$ ��ʼ�� 12 �ַ����ַ�����ֵ��
  • CRYPT_BLOWFISH - Blowfish �㷨ʹ��������ֵ��"$2a$"��һ����λ cost ������"$" �Լ� 64 λ�� "./0-9A-Za-z" �е��ַ���϶��ɵ��ַ���������ֵ��ʹ�ô˷�Χ֮����ַ������� crypt() ����һ�����ַ�������λ cost ������ѭ�������� 2 Ϊ�׵Ķ��������ķ�Χ�� 04-31�����������Χ������ crypt() ʧ�ܡ� PHP 5.3.7 ֮ǰֻ֧�� "$2a$" ��Ϊ��ֵ��ǰ׺��PHP 5.3.7 ��ʼ�������µ�ǰ׺������һ����Blowfishʵ���ϵİ�ȫ���ա����Բο�» this document���˽��������޸��ĸ�����Ϣ���ܶ���֮���������������� PHP 5.3.7��֮��汾���п�������Ӧ��ʹ�� "$2y$" ���� "$2a$"
  • CRYPT_SHA256 - SHA-256 �㷨ʹ��һ���� $5$ ��ͷ�� 16 �ַ��ַ�����ֵ����ɢ�С������ֵ�ַ����� "rounds=<N>$" ��ͷ��N ������ֵ��������ָ��ɢ��ѭ����ִ�д����������� Blowfish �㷨�� cost ������Ĭ�ϵ�ѭ�������� 5000����С�� 1000������� 999,999,999�����������Χ�� N ���ᱻת��Ϊ��ӽ���ֵ��
  • CRYPT_SHA512 - SHA-512 �㷨ʹ��һ���� $6$ ��ͷ�� 16 �ַ��ַ�����ֵ����ɢ�С������ֵ�ַ����� "rounds=<N>$" ��ͷ��N ������ֵ��������ָ��ɢ��ѭ����ִ�д����������� Blowfish �㷨�� cost ������Ĭ�ϵ�ѭ�������� 5000����С�� 1000������� 999,999,999�����������Χ�� N ���ᱻת��Ϊ��ӽ���ֵ��

Note:

�� PHP 5.3.0 ��PHP ���������Լ���ʵ�֣�������ϵͳȱ����Ӧ�㷨֧�ֵ�ʱ��ʹ�����Լ���ʵ�֡�

����

str

��ɢ�е��ַ�����

Caution

ʹ�� CRYPT_BLOWFISH �㷨������str���ü�Ϊһ���72���ַ����ַ�����

salt

��ѡ����ֵ�ַ��������û���ṩ���㷨��Ϊ���ɲ�ͬ���㷨ʵ�־����������ܵ��²���Ԥ�ϵĽ�����

����ֵ

����ɢ�к���ַ�����һ������ 13 �ַ����ַ������Ӷ���֤��ʧ��ʱ����ֵ���ֿ�����

Warning

��У������ʱ��Ӧ��ʹ��һ�������ױ�ʱ�乥�����ַ����ȽϺ������Ƚ�crypt()�������֮ǰ��֪�Ĺ�ϣ���������Ŀ�ģ�PHP5.6��ʼ�ṩ��hash_equals()��

������־

�汾 ˵��
5.6.5 When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
5.6.0 Raise E_NOTICE security warning if salt is omitted.
5.5.21 When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.5 (and earlier branches) would incorrectly return a DES hash.
5.3.7 Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
5.3.2 ���� Ulrich Drepper ��» ʵ������������ SHA-256 �㷨�� SHA-512 �㷨�� crypt��
5.3.2 ������ Blowfish �㷨���ڷǷ�ѭ�����µ����⣬����"ʧ��"�ַ�����"*0" �� "*1"��������ת��ʹ�� DES �㷨��
5.3.0 PHP ���ڰ��������Լ��� MD5 Crypt ʵ�֣�������׼ DES �㷨����չ�� DES �㷨�Լ� Blowfish �㷨�����ϵͳȱ����Ӧ��ʵ�֣���ô PHP ��ʹ�����Լ���ʵ�֡�

����

Example #1 crypt() ����

<?php
$hashed_password 
crypt('mypassword'); // �Զ�������ֵ

/* ��Ӧ��ʹ�� crypt() �õ������������Ϊ��ֵ��������У�飬�Դ�������ʹ�ò�ͬɢ���㷨���µ����⡣���������������ڱ�׼ DES �㷨������ɢ��ʹ�� 2 �ַ���ֵ�����ǻ��� MD5 �㷨��ɢ��ʹ�� 12 ���ַ���ֵ����*/
if (hash_equals($hashed_passwordcrypt($user_input$hashed_password))) {
   echo 
"Password verified!";
}
?>

Example #2 ���� htpasswd ���� crypt() ����

<?php
// ��������
$password 'mypassword';

// ��ȡɢ��ֵ��ʹ���Զ���ֵ
$hash crypt($password);
?>

Example #3 �Բ�ͬɢ������ʹ�� crypt()

<?php
if (CRYPT_STD_DES == 1) {
    echo 
'Standard DES: ' crypt('rasmuslerdorf''rl') . "\n";
}

if (
CRYPT_EXT_DES == 1) {
    echo 
'Extended DES: ' crypt('rasmuslerdorf''_J9..rasm') . "\n";
}

if (
CRYPT_MD5 == 1) {
    echo 
'MD5:          ' crypt('rasmuslerdorf''$1$rasmusle$') . "\n";
}

if (
CRYPT_BLOWFISH == 1) {
    echo 
'Blowfish:     ' crypt('rasmuslerdorf''$2a$07$usesomesillystringforsalt$') . "\n";
}

if (
CRYPT_SHA256 == 1) {
    echo 
'SHA-256:      ' crypt('rasmuslerdorf''$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}

if (
CRYPT_SHA512 == 1) {
    echo 
'SHA-512:      ' crypt('rasmuslerdorf''$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
?>

�������̵���������ڣ�

Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5:          $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish:     $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
SHA-256:      $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
SHA-512:      $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21

ע��

Note: ���� crypt() ʹ�õ��ǵ����㷨����˲����� decrypt ������

�μ�

  • hash_equals() - �ɷ�ֹʱ�򹥻����ַ����Ƚ�
  • password_hash() - ���������ɢ�У�hash��
  • md5() - �����ַ����� MD5 ɢ��ֵ
  • Mcrypt ��չ
  • ������� crypt ��������Ϣ�����Ķ� Unix man ҳ��