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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
针对初学PHP者的疑难问答(2)
Oct 09 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP ADODB实现分页功能简单示例
May 25 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PHP实现简易图形计算器
Aug 28 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Pytorch中.new()的作用详解
2020/02/18 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
大数据分析用java还是Python
2020/07/06 Python
python定义具名元组实例操作
2021/02/28 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
毕业生医学检验求职信
2013/10/16 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
市场部经理岗位职责
2015/02/02 职场文书
通知函格式范文
2015/04/27 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js