程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP隨機生成唯一HASH值自定義函數

PHP隨機生成唯一HASH值自定義函數

編輯:PHP綜合

網上有很多種方法獲取隨機唯一的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();
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved