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 adodb操作mysql数据库
Mar 19 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
php中namespace use用法实例分析
Jan 22 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP微信支付实例解析
Jul 22 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
mysql limit查询优化分析
2008/11/12 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
类之Prototype.js学习
2007/06/13 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
javascript window对象属性整理
2009/10/24 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python2包含中文报错的解决方法
2018/07/09 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
python ssh 执行shell命令的示例
2020/09/29 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
syb养殖创业计划书
2014/01/09 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
学术会议通知范文
2015/04/15 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
导游词之清晏园
2019/11/22 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python