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 相关文章推荐
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
php生成缩略图的类代码
Oct 02 PHP
php抓取https的内容的代码
Apr 06 PHP
深入php之规范编程命名小结
May 15 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 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
浅析iis7.5安装配置php环境
2015/05/10 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
使用pycharm生成代码模板的实例
2018/05/23 Python
python中的常量和变量代码详解
2018/07/25 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
模具数控专业自荐信
2014/01/27 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
教师自我鉴定范文
2014/03/20 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
小班下学期个人总结
2015/02/12 职场文书
复试通知单模板
2015/04/24 职场文书
2015年机关党委工作总结
2015/05/23 职场文书