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并发访问实例代码
Sep 06 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
php中smarty区域循环的方法
Jun 11 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
thinkphp5修改view到根目录实例方法
Jul 02 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
Node.js的特点详解
2017/02/03 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
python如何生成各种随机分布图
2018/08/27 Python
Python @property使用方法解析
2019/09/17 Python
softmax及python实现过程解析
2019/09/30 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
几个人围成一圈的问题
2013/09/26 面试题
什么是Assembly(程序集)
2014/09/14 面试题
岗位廉政承诺书
2014/03/27 职场文书
企业宣传标语
2014/06/09 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书