激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 微博短鏈接算法php版本實現代碼

微博短鏈接算法php版本實現代碼

2020-01-09 18:31PHP教程網 PHP教程

將長網址md5生成32位簽名串,分為4段, 每段8個字節

思路: 
1)將長網址md5生成32位簽名串,分為4段, 每段8個字節; 
2)對這四段循環處理, 取8個字節, 將他看成16進制串與0x3fffffff(30位1)與操作, 即超過30位的忽略處理; 
3)這30位分成6段, 每5位的數字作為字母表的索引取得特定字符, 依次進行獲得6位字符串; 
4)總的md5串可以獲得4個6位串; 取里面的任意一個就可作為這個長url的短url地址; 
下面是PHP代碼: 

復制代碼代碼如下:


function shorturl($url='', $prefix='', $suffix='') { 
$base = array ( 
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 
'y', 'z', '0', '1', '2', '3', '4', '5'); 
$hex = md5($prefix.$url.$suffix); 
$hexLen = strlen($hex); 
$subHexLen = $hexLen / 8; 
$output = array(); 
for ($i = 0; $i < $subHexLen; $i++) { 
$subHex = substr ($hex, $i * 8, 8); 
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex)); 
$out = ''; 
for ($j = 0; $j < 6; $j++) { 
$val = 0x0000001F & $int; 
$out .= $base[$val]; 
$int = $int >> 5; 

$output[] = $out; 

return $output; 

$urls = shorturl('//www.zmynmublwnt.cn/'); 
var_dump($urls); 


結果 

復制代碼代碼如下:


array(4) { 
[0]=> 
string(6) "alms1l" 
[1]=> 
string(6) "2ipmby" 
[2]=> 
string(6) "avo1hu" 
[3]=> 
string(6) "fdlban" 


另外一個版本: 

復制代碼代碼如下:


function shorturl($url='', $prefix='', $suffix='') { 
$base = array( 
"a","b","c","d","e","f","g","h", 
"i","j","k","l","m","n","o","p", 
"q","r","s","t","u","v","w","x", 
"y","z","0","1","2","3","4","5", 
"6","7","8","9","A","B","C","D", 
"E","F","G","H","I","J","K","L", 
"M","N","O","P","Q","R","S","T", 
"U","V","W","X","Y","Z"); 
$hex = md5($prefix.$url.$suffix); 
$hexLen = strlen($hex); 
$subHexLen = $hexLen / 8; 
$output = array(); 
for ($i = 0; $i < $subHexLen; $i++) { 
$subHex = substr ($hex, $i * 8, 8); 
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex)); 
$out = ''; 
for ($j = 0; $j < 6; $j++) { 
$val = 0x0000003D & $int; 
$out .= $base[$val]; 
$int = $int >> 5; 

$output[] = $out; 

return $output; 


結果: 

復制代碼代碼如下:


array(4) { 
[0] => 
string(6) "6jmMVj" 
[1] => 
string(6) "2EnIby" 
[2] => 
string(6) "6vIVfu" 
[3] => 
string(6) "B7Fb6n" 


但是升級版本碰撞率反而更高了,不知道為什么。 
測試碰撞的測試代碼: 

復制代碼代碼如下:


$result = array(); 
$repeats= array(); 
$loop = 20000; 
for($i=0;$i<$loop;$i++){ 
$url = '//www.zmynmublwnt.cn/?id='.$i; 
$shorta = shorturl($url); 
$short = $shorta[0]; 
if(in_array($short, $result)){ 
$repeats[] = $short; 

$result[] = $short; 

$result = array(); 
for($i=0;$i<$loop;$i++){ 
$url = '//www.zmynmublwnt.cn/?id='.$i; 
$shorta = shorturl($url); 
$short = $shorta[0]; 
if(in_array($short, $repeats)){ 
$result[$short][] = $url; 


var_dump($repeats); 
var_dump($result); 


結果: 

復制代碼代碼如下:


array(8) { 
[0] => 
string(6) "3eQBzq" 
[1] => 
string(6) "uQFnay" 
[2] => 
string(6) "qEZbIv" 
[3] => 
string(6) "fMneYf" 
[4] => 
string(6) "FJj6Fr" 
[5] => 
string(6) "3Eviym" 
[6] => 
string(6) "j2mmuy" 
[7] => 
string(6) "jyQfIv" 

array(8) { 
'jyQfIv' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=1640" 
[1] => 
string(27) "//www.zmynmublwnt.cn/?id=18661" 

'fMneYf' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=2072" 
[1] => 
string(26) "//www.zmynmublwnt.cn/?id=8480" 

'3eQBzq' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=4145" 
[1] => 
string(26) "//www.zmynmublwnt.cn/?id=4273" 

'j2mmuy' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=7131" 
[1] => 
string(27) "//www.zmynmublwnt.cn/?id=17898" 

'qEZbIv' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=7320" 
[1] => 
string(26) "//www.zmynmublwnt.cn/?id=8134" 

'uQFnay' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=7347" 
[1] => 
string(26) "//www.zmynmublwnt.cn/?id=7962" 

'FJj6Fr' => 
array(2) { 
[0] => 
string(26) "//www.zmynmublwnt.cn/?id=8628" 
[1] => 
string(26) "//www.zmynmublwnt.cn/?id=9031" 

'3Eviym' => 
array(2) { 
[0] => 
string(27) "//www.zmynmublwnt.cn/?id=11175" 
[1] => 
string(27) "//www.zmynmublwnt.cn/?id=14437" 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美 日韩 国产 在线 | 色阁五月| 日本成人在线免费 | 蜜桃一本色道久久综合亚洲精品冫 | 精品国产一区二区三区久久久 | 玩偶姐姐在线观看免费 | 久久精品国产精品亚洲 | 双性精h调教灌尿打屁股的文案 | av中文在线观看 | 免费播放av | 日韩av在线影院 | 最新精品在线 | 国产日韩中文字幕 | 国产又粗又爽又深的免费视频 | 久久精品网站视频 | 精品久久久久久久久久中文字幕 | 国产亚洲精品综合一区 | 精品黑人一区二区三区国语馆 | 蜜桃91麻豆 | 国语自产免费精品视频在 | 欧美视频网 | 国产成年人视频网站 | 欧美视频在线一区二区三区 | 成人男男视频拍拍拍在线观看 | 亚洲精品欧美二区三区中文字幕 | 毛片大全免费 | 午夜精品久久久久久毛片 | 成人精品久久久 | www.99av| 久久91精品国产91久久yfo | 欧美伦理一区二区 | free台湾极品性hd | 成人在线视频免费观看 | 日本黄色大片免费 | xnxx 美女19| 国产精品高潮99久久久久久久 | 久久国产精品影视 | 国产九色在线观看 | 综合网日日天干夜夜久久 | 久草在线手机视频 | 偷偷草网站 |