password_hash的三种加密方式
1: password_hash("这是要加密的数据", PASSWORD_DEFAULT);
// 输出值:$2y$10$n3NgmZhjatBkOmMLzGxtmusnIJk7Z0k8MAticaABfqxLs/T/4jsUa
2:
$options = [
'cost' => 12,
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
// 输出值:$2y$12$rb8hK0rIh8hSEcJi1fLfbOF1bbVXfj813QLaIKqhkxkG1OcKsCKri
3:
$options = [
'cost' => 11,
'salt' => openssl_encrypt('这是要加密的数据','aes-128-cbc', 'passphrase'),
];
echo password_hash("这是要转成哈希的数据", PASSWORD_BCRYPT, $options);
// 输出值是:$2y$11$VEg5ZVBJRS92ZUFLbkF3U.MAq2R0tupMpzqq3RmAP1tyWf8O/RsLO
哈希加密的特点是,输入数据不固定,输出的长度是固定的。所以,输出数据是一个有限的集合。把一个无限的集合中的每个元素映射到一个有限的集合,就必然存在某些不同的输入得到了相同的输出。
很显然,碰撞的概率和输出的集合大小相关。输出位数越多,输出集合就越大,碰撞率就越低。