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+dbfile开发小型留言本
Oct 09 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHPEXCEL 使用小记
Jan 06 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
详解PHP中的Traits
Jul 29 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
php解决安全问题的方法实例
Sep 19 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消息队列用法实例分析
2016/02/12 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
php实现登录页面的简单实例
2019/09/29 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
浅析Python 中整型对象存储的位置
2016/05/16 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Python何时应该使用Lambda函数
2019/07/02 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
毕业生自荐信
2013/12/14 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
2014年教师节寄语
2014/04/03 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL