第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有沒有什么算法可以實(shí)現(xiàn)把md5的結(jié)果轉(zhuǎn)換成10進(jìn)制的?

有沒有什么算法可以實(shí)現(xiàn)把md5的結(jié)果轉(zhuǎn)換成10進(jìn)制的?

PHP
白板的微信 2023-04-15 21:17:29
md5這種方法都是哈希成一個(gè)字符+數(shù)字的字符串,但是現(xiàn)在我需要把一個(gè)字符串哈希成10進(jìn)制數(shù)字,有沒有什么算法可以實(shí)現(xiàn)的,或者可以把md5的結(jié)果轉(zhuǎn)換成10進(jìn)制的
查看完整描述

2 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

一般情況而言需要做字符串到十進(jìn)制數(shù)字的轉(zhuǎn)換可以用 crc32() 函數(shù) ...

這個(gè)函數(shù)的優(yōu)點(diǎn)是快 ... 在我的知識(shí)范圍內(nèi)這應(yīng)該是 php 內(nèi)置最快的哈希函數(shù) ...

缺點(diǎn)是操作系統(tǒng)依賴 ... 不同操作系統(tǒng)的 crc32() 函數(shù)會(huì)產(chǎn)生不一樣的值 ...

至于把 md5() 的結(jié)果轉(zhuǎn)化成十進(jìn)制 ... 用 hexdec() 顯然是不靠譜的 ... 原因如樓上所說不贅述 ...

這里我們用到另外一個(gè)更加靈活的進(jìn)制轉(zhuǎn)換函數(shù) base_convert() ...

這個(gè)函數(shù)的好處是返回 string ... 也就不存在溢出的問題了 ...

示例代碼如下 ...

<?phpecho base_convert( md5( 'something' ), 16, 10 );// 89699910832403552662426604448206446062


查看完整回答
反對(duì) 回復(fù) 2023-04-19
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

你可以用php的hexdec函數(shù),把md5的結(jié)果分段轉(zhuǎn),因?yàn)閔exdec最大只能轉(zhuǎn)0x7fffffff,再大就變成float了。

另外,你不一定非要用md5,因?yàn)閙d5的結(jié)果是128bit的,php語言本身無法直接保存這么大的十進(jìn)制數(shù)??梢詤⒖約dbmhash、jshash、或者C++ STL里對(duì)字符串的哈希自己實(shí)現(xiàn)一個(gè),例如這個(gè)是python版的sdbmhash

def sdbm_hash_string(str):    h = 0
    m = (1 << 32)    for i in str:
        t = h
        h = (t << 6) % m + (t << 16) % m - t + ord(i)        h %= m    return h

最后順便說一下,不要試圖把md5結(jié)果拆成幾段然后XOR之類的,效果不如直接取最后幾個(gè)字節(jié)。


查看完整回答
反對(duì) 回復(fù) 2023-04-19
  • 2 回答
  • 0 關(guān)注
  • 471 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)