>  기사  >  백엔드 개발  >  PHP 암호화: 비밀번호 해싱 API

PHP 암호화: 비밀번호 해싱 API

藏色散人
藏色散人앞으로
2020-03-02 14:18:084513검색

PHP 5.5 이후에는 해시된 비밀번호를 생성하고 확인하기 위해 비밀번호 해싱 API가 도입되었습니다. 이 API는 커널과 함께 제공되며 확장 설치 및 구성이 필요하지 않습니다. 주로 네 가지 기능을 제공합니다:

● 비밀번호 해시(): 비밀번호 해시 생성

● 비밀번호 확인(): 비밀번호가 해시와 일치하는지 확인합니다. 🎜🎜#

●password_needs_rehash(): 주어진 해시가 주어진 옵션과 일치하는지 확인합니다.

●password_get_info(): 지정된 해시에 대한 관련 정보를 반환합니다.

1, password_hash(string 비밀번호, int algo [, 배열 옵션])

password_hash(string password, int algo [, array options])

使用足够强度的单向散列算法生成密码的哈希。此函数兼容 crypt(),即由 crypt() 生成的哈希值可以使用 Password hashing API 的相关函数进行校验。

● password:用户密码。

● algo:密码算法常量。取值包括:

● PASSWORD_DEFAULT:使用 bcrypt 算法。最终生成的结果可能超过 60 个字符;

● PASSWORD_BCRYPT:使用 CRYPT_BLOWFISH 算法创建哈希。最终结果是 60 个字符的字符串,或在失败时返回 FALSE。

● salt:手动提供哈希密码的盐值。省略此项时,函数会为每个密码哈希自动生成随机的盐值。PHP 7.0 已废弃该项;

● cost:代表算法使用的 cost。默认值是 10,可根据实际情况增加。

2、password_verify(string password, string hash)

● password:用户提供的密码。

● hash:由 password_hash() 创建的哈希散列值。 如果匹配则返回 TRUE,否则返回 FALSE。时序攻击对此函数不起作用。

3、password_needs_rehash(string hash, integer algo [, array opitons])

● hash:由 password_hash() 生成的哈希;

● algo:密码算法常量;

● options:包含有关选项的关联数组。

4、password_get_info(string hash) hash비밀번호를 생성하려면 충분히 강력한 단방향 해시 알고리즘을 사용하세요. 해시시. 이 함수는 crypt()와 호환됩니다. 즉, crypt()에서 생성된 해시 값은 Password hashing API의 관련 함수를 사용하여 확인할 수 있습니다.

● 비밀번호: 사용자 비밀번호입니다.

● algo: 암호화 알고리즘 상수입니다. 값은 다음과 같습니다:

● PASSWORD_DEFAULT: bcrypt 알고리즘을 사용합니다. 최종 생성된 결과는 60자보다 길 수 있습니다.

● PASSWORD_BCRYPT: 해시를 생성하려면 CRYPT_BLOWFISH 알고리즘을 사용하세요. 최종 결과는 60자 문자열이거나 실패 시 FALSE입니다.

● 소금: 해시된 비밀번호에 소금 값을 수동으로 제공합니다. 생략하면 함수는 각 비밀번호 해시에 대해 임의의 솔트 값을 자동으로 생성합니다. 이 항목은 PHP 7.0에서 폐기되었습니다. ● 비용: 알고리즘에서 사용되는 비용을 나타냅니다. 기본값은 10이며 실제 상황에 따라 늘릴 수 있습니다.

#🎜🎜#2. password_verify(문자열 비밀번호, 문자열 해시)#🎜🎜##🎜🎜#● 비밀번호: 사용자가 제공한 비밀번호입니다. #🎜🎜##🎜🎜#● 해시:password_hash()에 의해 생성된 해시 값입니다. 일치하는 항목이 있으면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 이 함수에서는 타이밍 공격이 작동하지 않습니다. #🎜🎜##🎜🎜#3, password_needs_rehash(string hash, 정수 algo [, array opitons])#🎜🎜##🎜🎜#● 해시:password_hash()에 의해 생성된 해시; 🎜🎜##🎜🎜#● algo: 암호화 알고리즘 상수 #🎜🎜##🎜🎜#● 옵션: 관련 옵션을 포함하는 연관 배열. #🎜🎜##🎜🎜#4. password_get_info(string hash) hash:password_hash()에 의해 생성된 해시입니다. 세 가지 요소를 포함하는 연관 배열을 반환합니다: #🎜🎜##🎜🎜#● algo: 암호화 알고리즘 상수 #🎜🎜##🎜🎜#● algoName: 알고리즘 이름 #🎜🎜##🎜🎜#● 옵션: 제공됨 Password_hash()를 호출할 때. #🎜🎜##🎜🎜#Example#🎜🎜#
$str = 'chicken,run!';
$pwd1 = password_hash($str, PASSWORD_BCRYPT);
$pwd2 = crypt($str);

var_dump(password_verify('chicken,run!', $pwd1));    // 输出 true
var_dump(password_verify('chicken,ran!', $pwd1));    // 输出 false
var_dump(password_verify($str, $pwd2));    // 输出 true
var_dump(password_needs_rehash($pwd1, PASSWORD_BCRYPT, ['cost'=>10]));   // 输出 false,因为 password_hash() 在加密时,出来默认 cost 为 10 外,还会指定随机的盐值
#🎜🎜#더 많은 프로그래밍 관련 내용은 PHP 중국어 홈페이지의 #🎜🎜#Programming Introduction#🎜🎜# 칼럼을 주목해주세요! #🎜🎜#

위 내용은 PHP 암호화: 비밀번호 해싱 API의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제