//获取可用的密码哈希算法ID
password_algos():array
//使用足够强度的单向散列算法创建密码的散列,兼容crypt();在交互的系统上,推荐在自己的服务器上测试此函数,调整cost参数直至函数时间开销小于100毫秒
password_hash(string $password, mixed $algo, array $options = ?):string|false
password 用户的密码
algo 用来在散列密码时指示算法的密码算法常量
当前支持的算法
PASSWORD_DEFAULT 使用bcrypt算法,使用此常量生成结果的长度将在未来有变化
PASSWORD_BCRYPT 使用CRYPT_BLOWFISH算法创建散列,结果将会是60个字符的字符串
PASSWORD_ARGON2I 使用Argon2i散列算法创建散列,需要支持Argon2
PASSWORD_ARGON2ID 使用Argon2id散列算法创建散列,需要支持Argon2
options 包含有选项的关联数组,与密码算法相关。省略后将使用随机盐值与默认cost;cost在8-10是个不错的底线,在服务器够快的情况下,越高越好
//如果传入的散列值(hash)是由password_hash()支持的算法生成的,就会返回关于此散列的信息数组
password_get_info(string $hash):array
hash 由password_hash()创建的散列值
返回值
algo 匹配密码算法的常量
algoName 人类可读的算法名称
options 调用password_hash()时提供的选项
//检测指定的散列值是否实现了提供的算法和选项。
password_needs_rehash(string $hash,mixed $algo, array $options = ?):bool
hash 由password_hash()创建的散列值。
algo 在散列密码时指定算法的密码算法常量。
options 包含有选项的关联数组
//验证密码是否和散列值匹配
password_verify(string $password,string $hash):bool
// 使用CRYPT_BLOWFISH算法创建新的密码哈希,哈希后的字符始终为60个字符
PASSWORD_BCRYPT
option:
salt(string):手动提供一个盐,以便在对密码进行哈希时使用。将覆盖并防止盐自动生成。省略将生成随机盐,自PHP7.0.0起,salt选项已弃用。
cost(int):应使用的算法成本,默认10;
// 使用Argon2i算法创建新的密码哈希,PHP7.2.0起可用
PASSWORD_ARGON2I
option:
memory_cost(int):用于计算Argon2哈希值的最大内存(以字节为单位)。默认为PASSWORD_ARGON2_DEFAULT_MEMORY_COST。
time_cost(int):计算Argon2哈希值可能花费的最长时间。默认为PASSWORD_ARGON2_DEFAULT_TIME_COST。
threads(int):用于计算Argon2哈希的线程数。默认为PASSWORD_ARGON2_DEFAULT_THREADS
// 使用Argon2id算法创建新的密码哈希,选项与PASSWORD_ARGON2I相同,PHP7.3.0起可用
PASSWORD_ARGON2ID
// 默认算法,在更新的PHP版本中,当支持更新、更强的散列算法时,这一点可能会改变。应以可以存储60个以上字符(建议的宽度为255)的方式存储结果散列
PASSWORD_DEFAULT
// Argon2lib在尝试计算哈希值时将使用的默认内存量(以字节为单位)。PHP7.2.0起可用
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
// Argon2lib尝试计算哈希所花费的默认时间。PHP7.2.0起可用
PASSWORD_ARGON2_DEFAULT_TIME_COST
// Argon2lib将使用的默认线程数。PHP7.2.0起可用
PASSWORD_ARGON2_DEFAULT_THREADS