目标:找到最加密的安全随机字符串生成器.在字符串中使用字母,数字和可能的特殊字符.
我一直在这里和其他地方读书,但我仍然听到很多不同的答案/意见.那些对安全性和加密技术有最新知识且知识渊博的人可以在这里发出声音.
以下函数将用于生成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 a string
}
功能2:
PHP.net文档说:
crypto_strong:
如果传入函数,这将保存一个布尔值,用于确定所使用的算法是否“加密强”,例如,使用GPG,密码等是否安全.如果是,则为TRUE,否则为FALSE.
那么基于服务器呢?如果我测试一次,并且它能够生成一个crypto_strong字符串,它总是能够吗?或者我是否需要每次检查并创建一个循环,直到它生成一个crypto_strong字符串.
/**
* Used for generating a random string.
*
* @param int $_Length The length of bits.
* @return string The random string.
*/
function gfSecureString($_Length) {
$Str = bin2hex(openssl_random_pseudo_bytes($_Length));
return $Str;
}
我欢迎任何提高加密强度的建议.