原创

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),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信