(PHP 4, PHP 5, PHP 7)
crypt — �����ַ���ɢ��
$str
[, string $salt
] ) : stringcrypt() ����һ�����ڱ� 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
��ɢ�е��ַ�����
ʹ�� CRYPT_BLOWFISH
�㷨������str
���ü�Ϊһ���72���ַ����ַ�����
salt
��ѡ����ֵ�ַ��������û���ṩ���㷨��Ϊ���ɲ�ͬ���㷨ʵ�־����������ܵ��²���Ԥ�ϵĽ�����
����ɢ�к���ַ�����һ������ 13 �ַ����ַ������Ӷ���֤��ʧ��ʱ����ֵ���ֿ�����
��У������ʱ��Ӧ��ʹ��һ�������ױ�ʱ�乥�����ַ����ȽϺ������Ƚ�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_password, crypt($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 ������