经过几天研究哈希,生成随机数或唯一密钥,我现在有点困惑.
我还有一件事我想要正确使用哪个是用户密钥.我想为在我的网站上注册的每个会员/用户存储一个唯一的密钥.所以这个密钥必须是唯一的,不能重复.我正在考虑使用用户电子邮件并将其与时间或其他东西一起散列...
然后我想知道哪个是创建这样一个密钥的最佳方式 -
我可以使用hash_hmac()为我做这个吗?
我有几件事情不了解hash_hmac()虽然 - 如本例中的php.nethash_hmac('ripemd160', 'The quick brown fox jumped over the lazy dog.', 'secret');
那么什么是"秘密" - 我可以把任何不同的东西改成,比如时间吗?我认为我可以取代'快速的棕色狐狸跳过懒狗.' 用电子邮件地址?
或者我可以使用Portable PHP密码哈希框架来做到这一点?
唯一的事情是它产生.,$并且/我需要删除它们,否则当我从URL请求密钥时我会收到错误.
所以我可能会这样做 -
$hash = $phpass -> HashPassword('me@example.com'.$timedate)
$key = preg_replace("/[^a-zA-Z0-9]+/", "", $hash);
Run Code Online (Sandbox Code Playgroud)
如果您有任何更好的建议,请告诉我.
Alf*_*red 14
我还有一件事我想要正确使用哪个是用户密钥.我想为在我的网站上注册的每个会员/用户存储一个唯一的密钥.所以这个密钥必须是唯一的,不能重复.我正在考虑使用用户电子邮件并将其与时间日期或其他内容一起散列
md5(uniqid(rand(), TRUE));index.php文件:
for ($i=0;$i<10;$i++) {
echo md5(uniqid(rand(), TRUE)) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
php index.php
ba0d9aad1ff0ceadf4b25f101099b91e
b5a6db5e174b426061d3d3835a6fcaea
54be6d3a03e0590917ed20b097442e3a
6e208a61eae8cfd102d4a41decf0f64e
2cafac5402815af87e8299e5e67016bd
95e839097a566471c70fe357e5a101d2
c6908532bda6f926debdda754b02f931
aac7adf999dd4dd009f208b176ea90d0
1ed7779229e57b05adc088b375582cfb
e016a684564d5cdb89201ebab1038609
Run Code Online (Sandbox Code Playgroud)
它们都是独一无二的,你可以使用它们.你不应该做任何其他事情?