目前据说MD5部分不安全.考虑到这一点,我想知道用于密码保护的机制.
这个问题,"双重哈希"密码是否比仅仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护?建议使用盐.
我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?另外,我更喜欢结果具有恒定数量的字符.
另外,我应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗?
如果我不够清楚,我想知道使用哪种散列函数以及如何选择好的盐以便拥有安全和快速的密码保护机制.
相关问题并不完全涵盖我的问题:
PHP中的SHA和MD5有什么区别
简单密码加密
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现salted密码
我正在尝试在PHP中创建一个随机字符串,我绝对没有输出:
<?php
function RandomString()
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
使用案例:"我忘了密码"按钮.我们找不到用户的原始密码,因为它以散列形式存储,因此唯一要做的就是生成一个新的随机密码并通过电子邮件发送给他.这需要加密不可预测的随机数,mt_rand不够好,通常我们不能假设托管服务将提供访问操作系统以安装加密随机数模块等所以我正在寻找一种方法在PHP本身生成安全的随机数.
到目前为止我提出的解决方案涉及存储初始种子,然后为每次调用,
result = seed
seed = sha512(seed . mt_rand())
Run Code Online (Sandbox Code Playgroud)
这是基于SHA512哈希函数的安全性(该mt_rand电话只是为了让生活多一点对谁获得数据库的副本对手困难).
我错过了什么,还是有更好的解决方案?
目标:找到最加密的安全随机字符串生成器.在字符串中使用字母,数字和可能的特殊字符.
我一直在这里和其他地方读书,但我仍然听到很多不同的答案/意见.那些对安全性和加密技术有最新知识且知识渊博的人可以在这里发出声音.
以下函数将用于生成8个字符的随机密码,并生成128个字符的随机令牌.
功能1:
/**
* Used for generating a random string.
*
* @param int $_Length The lengtyh of the random string.
* @return string The random string.
*/
function gfRandomString($_Length) {
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$pass = array(); //remember to declare $pass as an array
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
for ($i = 0; $i < $_Length; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass); //turn the array into …Run Code Online (Sandbox Code Playgroud) 我知道这可能看起来很傻,但我想生成一个8个characetrs的随机代码,只使用php的数字或字母.我需要这个为每个注册的用户生成一个密码,谢谢
我有这个代码用于fname从用户表上的最新记录中进行选择。
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
$sdt=$mysqli->('SELECT fname FROM user ORDER BY id DESC LIMIT 1');
$sdt->bind_result($code);
$sdt->fetch();
echo $code ;
Run Code Online (Sandbox Code Playgroud)
我之前使用过准备好的语句bind_param,但是现在在上面的代码中我第一次想使用不带绑定参数的准备好的语句,我不知道如何在不使用bind_param(). 怎么做?
我正在尝试做标题所说的事情,这就是我能弄清楚如何在 php 中做的所有事情。
<?php
$random = substr(md5(mt_rand()), 0, 8
echo $random;
?>
Run Code Online (Sandbox Code Playgroud)