日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

g_tk算法详解

發(fā)布時(shí)間:2024/5/15 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 g_tk算法详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

g_tk是騰訊在QQ空間這一領(lǐng)域使用的密文(其他的地方我沒(méi)遇到g_tk),有寫(xiě)數(shù)據(jù)包或者url參數(shù)中需要加入你計(jì)算出的g_tk才能成功!但是也有例外,也有些地方不需要g_tk也一樣成功,為了程序的嚴(yán)謹(jǐn),建議大家要計(jì)算g_tk的值。

g_tk是根據(jù)從cookie中獲取skey的值加密得到的。
其實(shí)g_tk是這樣獲取的:g_tk=getGTK(skey)
所以想計(jì)算g_tk必須先獲取skey,并且有g(shù)_tk算法getGTK函數(shù)。
微軟給我們提供了獲取cookie的API函數(shù),我們直接調(diào)用就很方便的獲取cookie

rivate Declare Function InternetGetCookie Lib "wininet.dll" Alias "InternetGetCookieA" (ByVal lpszUrlName As String, ByVal lpszCookieName As String, ByVal lpszCookieData As String, lpdwSize As Long) As Boolean Dim nLen As Long Dim sbuff As String * 1024 nLen = 1024 '獲取cookies InternetGetCookie "http://ptlogin2.qq.com/login", vbNullString, sbuff, nLen '此時(shí)sbuff變量里面就是http://ptlogin2.qq.com/login對(duì)應(yīng)的cookie Dim skey As String Dim sPos As Long sPos = InStr(sbuff, "skey=@") If sPos <> 0 Then skey = Mid(sbuff, sPos + 5, 10)


'這樣就從cookie中將skey的值提取出來(lái)了

以前在js文件中找到了g_tk算法函數(shù),如下:

function getGTK(str){ var hash = 5381; for(var i = 0, len = str.length; i < len; ++i){ hash += (hash << 5) + str.charAt(i).charCodeAt(); } return hash ; }


后來(lái)我用VB中的可以執(zhí)行腳本語(yǔ)言的ScriptControl控件執(zhí)行它,獲得g_tk的值:

?

ScriptControl1.Language = "Jscript"ScriptControl1.Timeout = -1 ScriptControl1.AddCode txtVarHexcase.Text Dim js(7) As String js(0) = "function getGTK(str){" & vbCrLf js(1) = "var hash = 5381;" & vbCrLf js(2) = "for(var i = 0, len = str.length; i < len; ++i){" & vbCrLf js(3) = " hash += (hash << 5) + str.charAt(i).charCodeAt();" & vbCrLf js(4) = "}" & vbCrLf js(5) = " return hash ;" & vbCrLf js(6) = "}" ScriptControl1.AddCode js(0) & js(1) & js(2) & js(3) & js(4) & js(5) & js(6) dim g_tk as string g_tk = ScriptControl1.Run("getGTK", "123")'調(diào)用getGTK函數(shù),參數(shù)為123,返回g_tk值是193432059


不懂javascript的朋友可能看不懂騰訊的代碼,當(dāng)我寫(xiě)完這個(gè)函數(shù),大家就明白具體怎么回事了,很好理解。
大家要支持易我論壇啊,我以后在慢慢細(xì)談我的經(jīng)驗(yàn),我掛科了,有點(diǎn)小郁悶,哎,但是一點(diǎn)也不影響我研究。

總結(jié)

以上是生活随笔為你收集整理的g_tk算法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。