Re: [請益] Pack('H*') in classic asp

看板PHP作者 (art)時間10年前 (2015/03/28 00:53), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《sliceart (art)》之銘言: : 想請問若要在ASP中實作PACK()的話該怎麼做呢? : 主要是為了將pack('H*',md5($str))實作在ASP中 : 在ASP內我先把md5的32個位元兩兩一組 : 再把這16組字串轉成數字,如33轉成51 : 然後再用chr()轉成ASCII,最後將這16個字元加起來 : 我這樣測試了幾筆資料,看起來是好像顯示出來的,PHP跟ASP都一樣 : 但是將解析出來的字串再透過MD5比對,PHP跟ASP的就天差地遠了 : 請問有沒有高手可解惑..... : 謝謝 : function PHP_PACK(str) : dim i , rtn , tmpA,tmpB : rtn = "" : For i = 1 to len(str) step 2 : tmpA = mid(str,i,1) : tmpB = mid(str,i+1,1) : num = HexToTen(tmpA)*16+HexToTen(tmpB) : 'response.write num&":"&chr(num)&"<br/>" : rtn = rtn & chr(num) : next : 'response.write rtn & ":"&md5(rtn)&"<br/>" : PHP_PACK=rtn : end function : function HexToTen(str) : select case lcase(str) : case "1":rtn = 1 : case "2":rtn = 2 : case "3":rtn = 3 : case "4":rtn = 4 : case "5":rtn = 5 : case "6":rtn = 6 : case "7":rtn = 7 : case "8":rtn = 8 : case "9":rtn = 9 : case "a":rtn = 10 : case "b":rtn = 11 : case "c":rtn = 12 : case "d":rtn = 13 : case "e":rtn = 14 : case "f":rtn = 15 : end select : HexToTen = rtn : end function 靈感來了 原因是ASP CHR()在128~255的資料問題 解決方案是採用codepage 1250 -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.212.242 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1427475202.A.8EB.html

03/28 01:12, , 1F
太厲害了,我還在想是不是靠左靠右的問題。
03/28 01:12, 1F
文章代碼(AID): #1L5Oi2Zh (PHP)
討論串 (同標題文章)
文章代碼(AID): #1L5Oi2Zh (PHP)