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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
php zend 相对路径问题
Jan 12 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php 地区分类排序算法
Jul 01 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 PHP
Linux系统下安装PHP7.3版本
Jun 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
PHP 已经成熟
2006/12/04 PHP
php使用百度天气接口示例
2014/04/22 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
Python实现通讯录功能
2018/02/22 Python
Django如何自定义分页
2018/09/25 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
django 外键创建注意事项说明
2020/05/20 Python
python 实现单例模式的5种方法
2020/09/23 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
中层干部竞聘演讲稿
2014/05/15 职场文书
工作散漫检讨书
2014/09/16 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
委托书英文
2015/01/28 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python
用Python生成会跳舞的美女
2022/01/18 Python
教你部署vue项目到docker
2022/04/05 Vue.js