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