PHP随机生成唯一HASH值自定义函数


Posted in PHP onApril 20, 2015

网上有很多种方法获取随机唯一的HASH值,但是大同小异:

1、先获取随机的唯一字符串
2、进行MD5或者sha1算HASH值

一个项目要用到hash值,就去网上找了找,却发现PHP有一个函数能直接生成唯一字符串——uniqid(),通过使用这个函数,再加上自己生成的随机数(防止被破解),更具有唯一性且不易被猜解。主要考虑问题如下:

1、随机的效率与随机性:rand和mt_rand函数的选择,首选mt_rand,效率高,随机性好;
2、随机次数:选择5次,本来unniqid就是唯一的,加上随机的可以只是增强安全性,5次足矣
3、md5还是sha1:都能生成唯一的hash值,sha1占用资源可能高点,但是微乎其微,如果考虑数据库存储的小写,可以使用md5(32位长度)

<?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)];//Random 5 times
  $content = uniqid().$random;  // 类似 5443e09c27bf4aB4uT
  return sha1($content); 
}
echo get_hash();
?>
PHP 相关文章推荐
php基础知识:类与对象(5) static
Dec 13 PHP
Php注入点构造代码
Jun 14 PHP
php注销代码(session注销)
May 31 PHP
php常用Stream函数集介绍
Jun 24 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
php隐藏实际地址的文件下载方法
Apr 18 #PHP
php实现用于计算执行时间的类实例
Apr 18 #PHP
php递归遍历多维数组的方法
Apr 18 #PHP
php实现二进制和文本相互转换的方法
Apr 18 #PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 #PHP
php准确计算复活节日期的方法
Apr 18 #PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 #PHP
You might like
php MySQL与分页效率
2008/06/04 PHP
php 中文处理函数集合
2008/08/27 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
javascript prototype,executing,context,closure
2008/12/24 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
mac系统安装Python3初体验
2018/01/02 Python
python入门教程 python入门神图一张
2018/03/05 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Pytorch之contiguous的用法
2019/12/31 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
2015年教师节主持词
2015/07/03 职场文书
酒店温馨提示语
2015/07/14 职场文书