原创

PHP 生成随机的唯一 HASH 值函数

哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的。

HASH是根据文件的内容的数据通过逻辑运算得到的数值,获取随机唯一HASH值,先获取随机的唯一字符串,之后进行MD5或sha1算出HASH值。

PHP中uniqid()函数可以直接生成唯一字符串,为了防止被破解加上自己生成的而随机数更加具有唯一性且不易被破解。

分析:

随机的效率与随机性:rand和mt_rand函数的选择,首选mt_rand,效率高,随机性好;

随机次数:选择5次,本来unniqid就是唯一的,加上随机的可以增强安全性。

md5或者sha1:都能生成唯一的hash值,sha1占用资源可能高点,但是微乎其微,如果考虑数据库存储的小写,可以使用32位长度的md5加密。

具体代码实现如下:

<?php
function get_hash(){
  $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
  $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];
  $content = uniqid().$random;=
  return sha1($content); 
}
echo get_hash();
~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信