原创

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),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信