Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你是如何创造的;“好”;php中的随机md5哈希?_Php_Hash_Md5_Uniqueidentifier - Fatal编程技术网

你是如何创造的;“好”;php中的随机md5哈希?

你是如何创造的;“好”;php中的随机md5哈希?,php,hash,md5,uniqueidentifier,Php,Hash,Md5,Uniqueidentifier,对于一些情况,我需要创建随机md5哈希。你知道做这件事最好/最安全的方法是什么吗 一些用例 验证电子邮件地址 重置密码 用于身份验证的某种会话id,而不是密码(例如:当有人点击“记住我”时,我不想将密码存储在cookie中) 背景 我知道rand()不应用于安全相关应用程序。因此,我选择: md5( uniqid(mt_rand(),true) ); 现在我在aboutuniqid()中读到,它不能用于安全目的。这是有意义的,因为它通常只给出时间戳之类的东西 但是,如果像我一样使用随机前缀

对于一些情况,我需要创建随机md5哈希。你知道做这件事最好/最安全的方法是什么吗

一些用例
  • 验证电子邮件地址
  • 重置密码
  • 用于身份验证的某种会话id,而不是密码(例如:当有人点击“记住我”时,我不想将密码存储在cookie中)
背景 我知道
rand()
不应用于安全相关应用程序。因此,我选择:

md5( uniqid(mt_rand(),true) );
现在我在about
uniqid()
中读到,它不能用于安全目的。这是有意义的,因为它通常只给出时间戳之类的东西

但是,如果像我一样使用随机前缀-
mt_rand()
,那么它还可以吗?或者在这种情况下应该使用更好的前缀吗

提前谢谢

您不需要“MD5哈希”,只需要一个随机字符串。这些根本不需要与MD5有任何关系。所以你只需要一个好的PRNG。例如:

$token = mcrypt_create_iv($rawLength, MCRYPT_DEV_URANDOM);
// or
$token = openssl_random_pseudo_bytes($rawLength);
// or
$token = file_get_contents('/dev/urandom', false, null, 0, $rawLength);
然后
base64\u对原始值进行编码
bin2hex
以获得ASCII字符串。

您不需要“MD5哈希”,只需要一个随机字符串。这些根本不需要与MD5有任何关系。所以你只需要一个好的PRNG。例如:

$token = mcrypt_create_iv($rawLength, MCRYPT_DEV_URANDOM);
// or
$token = openssl_random_pseudo_bytes($rawLength);
// or
$token = file_get_contents('/dev/urandom', false, null, 0, $rawLength);
然后
base64\u对原始值进行编码
bin2hex
以获得ASCII字符串。

您不需要“MD5哈希”,只需要一个随机字符串。这些根本不需要与MD5有任何关系。所以你只需要一个好的PRNG。例如:

$token = mcrypt_create_iv($rawLength, MCRYPT_DEV_URANDOM);
// or
$token = openssl_random_pseudo_bytes($rawLength);
// or
$token = file_get_contents('/dev/urandom', false, null, 0, $rawLength);
然后
base64\u对原始值进行编码
bin2hex
以获得ASCII字符串。

您不需要“MD5哈希”,只需要一个随机字符串。这些根本不需要与MD5有任何关系。所以你只需要一个好的PRNG。例如:

$token = mcrypt_create_iv($rawLength, MCRYPT_DEV_URANDOM);
// or
$token = openssl_random_pseudo_bytes($rawLength);
// or
$token = file_get_contents('/dev/urandom', false, null, 0, $rawLength);

然后
base64\u对原始值进行编码
bin2hex
以获得ASCII字符串。

我刚刚完成了一个相当健壮的Bash脚本的开发,该脚本生成了质量相当好的md5sum。你可以找到它

它具有以下特点:

时间戳降低到纳秒

用户可修改从/dev/uradom收集的数据量(默认值为.25秒)

用户可修改收集的鼠标移动数据量(默认值为.25秒,只需使用
xinput--list
并使用
-M
运行一次即可)

可动态修改的文本语句,可设置为默认值或随每次调用动态发送,例如
-s“$(history | tail-5)”

您可以很容易地移植到PHP,或者通过shell_exec从PHP调用它:

$random_md5sum=shell_exec('/path/to/gen_uniq_id.bsh-m1-r1-s“最喜欢的报价$(历史记录| tail-5)”)

我刚刚完成了一个相当健壮的Bash脚本的开发,它可以生成高质量的md5sum。你可以找到它

它具有以下特点:

时间戳降低到纳秒

用户可修改从/dev/uradom收集的数据量(默认值为.25秒)

用户可修改收集的鼠标移动数据量(默认值为.25秒,只需使用
xinput--list
并使用
-M
运行一次即可)

可动态修改的文本语句,可设置为默认值或随每次调用动态发送,例如
-s“$(history | tail-5)”

您可以很容易地移植到PHP,或者通过shell_exec从PHP调用它:

$random_md5sum=shell_exec('/path/to/gen_uniq_id.bsh-m1-r1-s“最喜欢的报价$(历史记录| tail-5)”)

我刚刚完成了一个相当健壮的Bash脚本的开发,它可以生成高质量的md5sum。你可以找到它

它具有以下特点:

时间戳降低到纳秒

用户可修改从/dev/uradom收集的数据量(默认值为.25秒)

用户可修改收集的鼠标移动数据量(默认值为.25秒,只需使用
xinput--list
并使用
-M
运行一次即可)

可动态修改的文本语句,可设置为默认值或随每次调用动态发送,例如
-s“$(history | tail-5)”

您可以很容易地移植到PHP,或者通过shell_exec从PHP调用它:

$random_md5sum=shell_exec('/path/to/gen_uniq_id.bsh-m1-r1-s“最喜欢的报价$(历史记录| tail-5)”)

我刚刚完成了一个相当健壮的Bash脚本的开发,它可以生成高质量的md5sum。你可以找到它

它具有以下特点:

时间戳降低到纳秒

用户可修改从/dev/uradom收集的数据量(默认值为.25秒)

用户可修改收集的鼠标移动数据量(默认值为.25秒,只需使用
xinput--list
并使用
-M
运行一次即可)

可动态修改的文本语句,可设置为默认值或随每次调用动态发送,例如
-s“$(history | tail-5)”

您可以很容易地移植到PHP,或者通过shell_exec从PHP调用它:

$random_md5sum=shell_exec('/path/to/gen_uniq_id.bsh-m1-r1-s“最喜欢的报价$(历史记录| tail-5)”)

如果有帮助,请参阅。您可以使用
base64\u encode
进行编码。@Log1cツ: Thx,里面有很多!最重要的可能是函数
openssl\u random\u pseudo\u bytes()
作为替代方法。@Prava MindfireSolutions:编码与其说是个问题,不如说是它的数据(base64也可以很容易地被解码/“反转”)。请参阅,如果它有帮助的话。您可以使用
base64\u encode
进行编码。@Log1cツ: Thx,里面有很多!最重要的可能是函数
openssl\u random\u pseudo\u bytes()
作为替代方法。@Prava MindfireSolutions:the en