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 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
PHP中的正规表达式(二)
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
使用PHP开发留言板功能
Nov 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中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
python与php实现分割文件代码
2017/03/06 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Numpy中的mask的使用
2018/07/21 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
挂牌仪式主持词
2014/03/20 职场文书
会计专业求职信范文
2015/03/19 职场文书
教师远程研修感悟
2015/11/18 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis