本申請(qǐng)涉及互聯(lián)網(wǎng)信息安全技術(shù)領(lǐng)域,特別涉及一種動(dòng)態(tài)口令驗(yàn)證方法及系統(tǒng)、客戶端和服務(wù)器。
背景技術(shù):
動(dòng)態(tài)口令是一種隨時(shí)間或事件變化而產(chǎn)生的口令,該口令在一定時(shí)間間隔內(nèi)有效且不可預(yù)測(cè),一般會(huì)通過(guò)動(dòng)態(tài)口令生成的載體顯示出來(lái),如手機(jī)令牌、刮刮卡等。動(dòng)態(tài)口令驗(yàn)證技術(shù)可以實(shí)現(xiàn)用戶安全身份驗(yàn)證功能,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,動(dòng)態(tài)口令驗(yàn)證技術(shù)已經(jīng)被廣泛應(yīng)用于企業(yè)、金融、網(wǎng)上銀行、電子政務(wù)等領(lǐng)域。例如,用戶在登錄網(wǎng)上銀行交易系統(tǒng)時(shí),系統(tǒng)會(huì)要求用戶輸入動(dòng)態(tài)口令,用戶完成輸入后,所述動(dòng)態(tài)口令被傳輸至驗(yàn)證服務(wù)器進(jìn)行驗(yàn)證。由于每次生成的動(dòng)態(tài)口令是隨機(jī)的,并且只能使用一次,可以防止對(duì)動(dòng)態(tài)口令竊聽(tīng)、重放、假冒、猜測(cè)等攻擊方式。
現(xiàn)有技術(shù)中,常用基于時(shí)間同步的動(dòng)態(tài)口令驗(yàn)證方法實(shí)現(xiàn)用戶身份的驗(yàn)證,所述驗(yàn)證方法中,客戶端生成動(dòng)態(tài)口令的算法包括時(shí)間因子參數(shù)。驗(yàn)證服務(wù)器生成驗(yàn)證動(dòng)態(tài)口令的驗(yàn)證口令,生成所述驗(yàn)證口令的算法也需要時(shí)間因子參數(shù)。
在實(shí)現(xiàn)本申請(qǐng)過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題:客戶端生成動(dòng)態(tài)口令算法中的時(shí)間因子來(lái)源于客戶端設(shè)備,驗(yàn)證服務(wù)器生成驗(yàn)證口令算法中的時(shí)間因子來(lái)源于驗(yàn)證服務(wù)器。通常情況下,客戶端設(shè)備時(shí)鐘和驗(yàn)證服務(wù)器時(shí)鐘幾乎不可能完全匹配,當(dāng)時(shí)間因子不匹配時(shí),生成的動(dòng)態(tài)口令和驗(yàn)證口令也將不匹配,這將導(dǎo)致用戶身份驗(yàn)證失敗。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的目的是提供一種動(dòng)態(tài)口令驗(yàn)證方法及系統(tǒng)、客戶端和服務(wù)器,以實(shí)現(xiàn)生成動(dòng)態(tài)口令算法中的時(shí)間因子以及生成驗(yàn)證口令算法中的時(shí)間因子完全匹配。
為解決上述技術(shù)問(wèn)題,本申請(qǐng)實(shí)施例提供一種動(dòng)態(tài)口令驗(yàn)證方法及系統(tǒng)、客戶端和服務(wù)器是這樣實(shí)現(xiàn)的:
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
客戶端向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;
客戶端接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;
客戶端根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器;
驗(yàn)證服務(wù)器根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成驗(yàn)證口令;
驗(yàn)證服務(wù)器判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;
接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;
根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器。
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;
返回服務(wù)器當(dāng)前時(shí)間至客戶端;
接收客戶端返回的動(dòng)態(tài)口令;
根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
在所述向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間之前,還包括:
客戶端檢查是否連接網(wǎng)絡(luò);
在判斷連接網(wǎng)絡(luò)時(shí),客戶端向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間。
所述根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,包括:
將所述服務(wù)器當(dāng)前時(shí)間和種子密鑰作為動(dòng)態(tài)口令算法的輸入?yún)?shù),采用動(dòng)態(tài)口令算法計(jì)算得到動(dòng)態(tài)口令。
所述種子密鑰包括所述客戶端初始化時(shí)生成并發(fā)送至所述驗(yàn)證服務(wù)器的種子密鑰。
所述種子密鑰包括所述客戶端初始化時(shí)生成,并在計(jì)算生成動(dòng)態(tài)口令時(shí)發(fā)送至所述驗(yàn)證服務(wù)器的種子密鑰。
所述動(dòng)態(tài)口令算法包括單向散列函數(shù)。
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
客戶端讀取預(yù)存的服務(wù)器同步時(shí)間;
客戶端根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;
客戶端根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器;
所述驗(yàn)證服務(wù)器接收所述動(dòng)態(tài)口令,根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
所述驗(yàn)證服務(wù)器判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
讀取預(yù)存的服務(wù)器同步時(shí)間;
根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;
根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器。
一種動(dòng)態(tài)口令驗(yàn)證方法,包括:
接收客戶端返回的動(dòng)態(tài)口令;
根據(jù)服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
所述根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,包括:
將所述服務(wù)器當(dāng)前時(shí)間和種子密鑰作為動(dòng)態(tài)口令算法的輸入?yún)?shù),采用動(dòng)態(tài)口令算法計(jì)算得到動(dòng)態(tài)口令。
所述種子密鑰包括所述客戶端初始化時(shí)生成并發(fā)送至所述驗(yàn)證服務(wù)器的種子密鑰。
所述種子密鑰包括所述客戶端初始化時(shí)生成,并在計(jì)算生成動(dòng)態(tài)口令時(shí)發(fā)送至所述驗(yàn)證服務(wù)器的種子密鑰。
所述動(dòng)態(tài)口令算法包括單向散列函數(shù)。
所述根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間,包括:
獲取存儲(chǔ)所述服務(wù)器同步時(shí)間時(shí)客戶端的第一時(shí)間;
計(jì)算客戶端當(dāng)前時(shí)間和所述第一時(shí)間的差值;
計(jì)算所述差值和所述服務(wù)器同步時(shí)間的和值,所述和值確定為所述服務(wù)器當(dāng)前時(shí)間。
一種動(dòng)態(tài)口令驗(yàn)證系統(tǒng),包括:
客戶端,用于向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器;
驗(yàn)證服務(wù)器,用于接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;返回服務(wù)器當(dāng)前時(shí)間至客戶端;根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
一種客戶端,包括:
請(qǐng)求單元,用于向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;
接收單元,用于接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;
動(dòng)態(tài)口令生成單元,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài) 口令上傳至所述驗(yàn)證服務(wù)器。
一種服務(wù)器,包括:
第一接收單元,用于接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;
返回單元,用于返回服務(wù)器當(dāng)前時(shí)間至客戶端;
第二接收單元,用于接收客戶端返回的動(dòng)態(tài)口令;
驗(yàn)證口令生成單元,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
驗(yàn)證單元,用于判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
一種動(dòng)態(tài)口令驗(yàn)證系統(tǒng),包括:
客戶端,用于讀取預(yù)存的服務(wù)器同步時(shí)間;根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器;
驗(yàn)證服務(wù)器,用于接收客戶端返回的動(dòng)態(tài)口令;根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
一種客戶端,包括:
讀取單元,用于讀取預(yù)存的服務(wù)器同步時(shí)間;
時(shí)間確定單元,用于根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;
動(dòng)態(tài)口令生成單元,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器。
一種服務(wù)器,包括:
接收單元,用于接收客戶端返回的動(dòng)態(tài)口令;、
驗(yàn)證口令生成單元,用于根據(jù)服務(wù)器當(dāng)前時(shí)間,計(jì)算生成驗(yàn)證口令;
驗(yàn)證單元,用于判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
所述時(shí)間確定單元包括:
獲取單元,用于獲取存儲(chǔ)所述服務(wù)器同步時(shí)間時(shí)客戶端的第一時(shí)間;
第一計(jì)算單元,用于計(jì)算獲取客戶端當(dāng)前時(shí)間和所述第一時(shí)間的差值;
第二計(jì)算單元,用于計(jì)算所述差值和所述服務(wù)器同步時(shí)間的和值,所述和值確定為所述服務(wù)器當(dāng)前時(shí)間。
由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見(jiàn),本申請(qǐng)實(shí)施例在基于時(shí)間同步的動(dòng)態(tài)口令驗(yàn)證方法中,客戶端在生成動(dòng)態(tài)口令之前,與服務(wù)器產(chǎn)生一次通信,獲取服務(wù)器的當(dāng)前時(shí)間,實(shí)現(xiàn)了客戶端生成動(dòng)態(tài)口令與驗(yàn)證服務(wù)器生成驗(yàn)證口令采用的時(shí)間因子的同步,從而提高了動(dòng)態(tài)口令與驗(yàn)證口令的匹配度。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第一方法實(shí)施例的流程示意圖;
圖2是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第一實(shí)施例應(yīng)用場(chǎng)景的示意圖;
圖3是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第二方法實(shí)施例的流程示意圖;
圖4是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證客戶端第一實(shí)施例的組成示意圖;
圖5是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第三方法實(shí)施例的流程示意圖;
圖6是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證服務(wù)器第一實(shí)施例的組成示意圖;
圖7是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第四方法實(shí)施例的流程示意圖;
圖8是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第五方法實(shí)施例的流程示意圖;
圖9是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證客戶端第二實(shí)施例的組成示意圖;
圖10是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證客戶端第二實(shí)施例中時(shí)間確定單元的組成示意圖;
圖11是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證方法第六方法實(shí)施例的流程示意圖;
圖12是本申請(qǐng)動(dòng)態(tài)口令驗(yàn)證服務(wù)器第二實(shí)施例的組成示意圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例提供一種動(dòng)態(tài)口令驗(yàn)證方法及系統(tǒng)、客戶端和服務(wù)器。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
動(dòng)態(tài)口令生成算法和驗(yàn)證口令生成算法是相同的,當(dāng)客戶端動(dòng)態(tài)口令生成算法中的時(shí)間因子和驗(yàn)證服務(wù)器驗(yàn)證口令生成算法中的時(shí)間因子相同時(shí),動(dòng)態(tài)口令和驗(yàn)證口令相匹配,用戶通過(guò)身份驗(yàn)證。所述客戶端還可以根據(jù)本地文件中保存的上一次同步的驗(yàn)證服務(wù)器時(shí)間,獲取驗(yàn)證服務(wù)器當(dāng)前時(shí)間。
以下介紹本申請(qǐng)的第一實(shí)施例的實(shí)現(xiàn)方案。
為了實(shí)現(xiàn)客戶端動(dòng)態(tài)口令生成算法中的時(shí)間因子和驗(yàn)證服務(wù)器驗(yàn)證口令生成算法中的 時(shí)間因子相同,客戶端在生成動(dòng)態(tài)口令之前,可以與驗(yàn)證服務(wù)器進(jìn)行一次通信,獲取驗(yàn)證服務(wù)器的當(dāng)前時(shí)間。具體可以通過(guò)如圖1所示的S101~S105的方法實(shí)現(xiàn)。
客戶端可以設(shè)置為能夠啟動(dòng)一個(gè)特定的功能例如觸摸某一預(yù)設(shè)的虛擬按鍵或者按下某個(gè)物理按鍵后啟動(dòng)該特定功能。該特定的功能可以再開(kāi)啟后執(zhí)行獲取驗(yàn)證服務(wù)器當(dāng)前時(shí)間的工作,例如下面S101~S103的工作。
步驟S101:客戶端向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間。
如上所述,客戶端在啟動(dòng)一特定功能后,可以執(zhí)行獲取驗(yàn)證服務(wù)器當(dāng)前時(shí)間的工作。首先,客戶端向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間。在本發(fā)明實(shí)施例中,客戶端可以向驗(yàn)證服務(wù)的時(shí)間同步接口發(fā)送http請(qǐng)求,請(qǐng)求驗(yàn)證服務(wù)器返回當(dāng)前時(shí)間。具體Java實(shí)現(xiàn)代碼如下所示:
Date date=obtainServerDate();//客戶端向驗(yàn)證服務(wù)器發(fā)起請(qǐng)求
public Date obtainServerDate()
{SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//驗(yàn)證服務(wù)器設(shè)置當(dāng)前時(shí)間
return df.format(new Date());}//驗(yàn)證服務(wù)器返回當(dāng)前時(shí)間至客戶端
在請(qǐng)求驗(yàn)證服務(wù)器當(dāng)前時(shí)間之前,客戶端還可以檢查是否連接網(wǎng)絡(luò)。當(dāng)所述客戶端連接網(wǎng)絡(luò)時(shí),客戶端才能實(shí)現(xiàn)與驗(yàn)證服務(wù)器的通信。一般的,客戶端設(shè)備包括電腦、PAD或者手機(jī)等,例如,一手機(jī)客戶端安裝有Android系統(tǒng),用戶在點(diǎn)擊客戶端當(dāng)前登錄頁(yè)面中的“獲取動(dòng)態(tài)口令”按鈕后,所述客戶端可以調(diào)用Android系統(tǒng)中網(wǎng)絡(luò)連接管理器檢查該手機(jī)客戶端是否連接網(wǎng)絡(luò)。具體地,手機(jī)客戶端可以調(diào)用Android系統(tǒng)中ConnectivityManager類的isAvailable()函數(shù),實(shí)現(xiàn)代碼如下:
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CON-NECTIVITY_SERVICE);
cwjManager.getActiveNetworkInfo().isAvailable();//返回True則可以判斷當(dāng)前Android手機(jī)客戶端已經(jīng)連接網(wǎng)絡(luò)。
與上述方法類似,在其他客戶端設(shè)備中,客戶端也是通過(guò)調(diào)用相應(yīng)的安裝系統(tǒng)中的網(wǎng)絡(luò)連接管理器檢查客戶端是否連接網(wǎng)絡(luò)。例如,安裝Win7系統(tǒng)的電腦通過(guò)調(diào)用Win7系統(tǒng)的網(wǎng)絡(luò)連接管理器檢查該電腦客戶端是否連接網(wǎng)絡(luò),安裝iOS系統(tǒng)的iPhone或者Ipad通過(guò)調(diào)用iOS系統(tǒng)的網(wǎng)絡(luò)連接管理器檢查iPhone或者Ipad客戶端是否連接網(wǎng)絡(luò)。
步驟S102:客戶端接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間。
驗(yàn)證服務(wù)器接收客戶端的請(qǐng)求,返回服務(wù)器當(dāng)前時(shí)間,具體Java實(shí)現(xiàn)代碼如上所示,客 戶端接收所述驗(yàn)證服務(wù)器返回的當(dāng)前時(shí)間。
步驟S103:客戶端根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令發(fā)送至所述驗(yàn)證服務(wù)器。
客戶端接收到服務(wù)器當(dāng)前時(shí)間后,根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令。生成動(dòng)態(tài)口令的算法包括單向散列函數(shù),如HMAC-SHA1、MD5、SHA-1以及SHA-256。例如,本申請(qǐng)實(shí)施例采用HMAC-SHA1算法計(jì)算生成動(dòng)態(tài)口令,具體步驟如下:
SS1:初始化種子密鑰以及時(shí)間因子。
用戶在注冊(cè)賬號(hào)時(shí),客戶端自動(dòng)生成種子密鑰,所述種子密鑰可以是客戶端生成的隨機(jī)碼。所述客戶端包括手機(jī)客戶端時(shí),所述種子密鑰可以包括IMEI,手機(jī)廠商標(biāo)識(shí)碼,手機(jī)屏幕分辨率以及手機(jī)操作系統(tǒng)版本號(hào)中的一個(gè)或者幾個(gè)的組合??蛻舳松伤龇N子密鑰后,可以立即將所述種子密鑰發(fā)送至驗(yàn)證服務(wù)器。驗(yàn)證服務(wù)器接收所述種子密鑰后,可以將所述種子密鑰以及相應(yīng)的用戶ID保存于驗(yàn)證服務(wù)器的數(shù)據(jù)庫(kù)中??蛻舳艘部梢栽谟?jì)算生成動(dòng)態(tài)口令時(shí)將所述種子密鑰發(fā)送至所述驗(yàn)證服務(wù)器。假設(shè)所述種子密鑰為key,所述時(shí)間因子為T(mén),初始化后的(種子密鑰key,時(shí)間因子T)為加密初值key2,所述加密初值key2可以按下式生成:
key2=copy(key,1,L/2)+FormatDateTime(‘yyyymmdd’,nowTime)+
copy(key,L/2,L)+FormatDateTime(‘hhmmss’,nowTime)
其中,L是種子密鑰key的長(zhǎng)度,copy(key,1,L/2)是種子密鑰的前段部分,copy(key,L/2,L)是后段部分。服務(wù)器當(dāng)前時(shí)間nowTime可以精確至秒,F(xiàn)ormatDateTime(‘yyyymmdd’,nowTime)可以按照‘yyyymmdd’的格式對(duì)服務(wù)器當(dāng)前時(shí)間的年、月、日值進(jìn)行格式化,如服務(wù)器當(dāng)前日期是2015年1月22日,則格式化后為“20150122”。FormatDateTime(‘hhmmss’,nowTime)可以按照‘hhmmss’的格式對(duì)服務(wù)器當(dāng)前時(shí)間的時(shí)、分、秒進(jìn)行格式化,如服務(wù)器當(dāng)前時(shí)間是下午兩點(diǎn)四十四分三秒,則格式化后為“144403”。舉個(gè)例子,種子密鑰key值為“999888”,客戶端接收的服務(wù)器當(dāng)前時(shí)間為2015年1月22日下午兩點(diǎn)四十四分三秒,那么加密初值key2可以表示為“99920150122999144403”。
SS2:根據(jù)所述加密初值計(jì)算生成HMAC-SHA-1值。
根據(jù)所述加密初值計(jì)算生成HMAC-SHA-1值,具體表達(dá)式為:
Hs=HMAC-SHA-1(加密初值)
其中,Hs是一個(gè)160位的二進(jìn)制串。HMAC-SHA-1是利用SHA-1算法進(jìn)行兩次雜湊運(yùn)算后,輸出一個(gè)160bit的HMAC-SHA-1值。所述SHA-1是現(xiàn)有技術(shù)的一種標(biāo)準(zhǔn)雜湊運(yùn)算,這里不再贅述。
SS3:根據(jù)所述HMAC-SHA-1值生成一個(gè)31位的二進(jìn)制串。
采用動(dòng)態(tài)偏移截短函數(shù)將160位的HMAC-SHA-1值中提取出一個(gè)31位的動(dòng)態(tài)二進(jìn)制串,具體表達(dá)式為P=DT(Hs),式中DT是截短函數(shù)。P=DT(Hs)的具體實(shí)現(xiàn)過(guò)程如下:
Hs=Hs[0]Hs[1]…Hs[19];//式中Hs[i]為二進(jìn)制串Hs的第i個(gè)字節(jié);
OffsetBits=Hs[19]&0xf;//式中OffsetBits為偏移位數(shù),取Hs[19]的最后4位;
Offset=StToNum(OffsetBits);
//式中將OffsetBits轉(zhuǎn)換為十進(jìn)制數(shù),并且值在0-15之間;
P=(Hs[Offset]&0x7f)<<24|(Hs[Offset+1]&0xff)<<16|(Hs[Offset+2]&0xff)<<8|(Hs[Offset+3]&0xff);//式中從Hs[Offset]至Hs[Offset+3]連續(xù)4個(gè)字節(jié)中取后31位。
SS4:根據(jù)所述31位二進(jìn)制串獲取動(dòng)態(tài)口令。
根據(jù)所述31位的二進(jìn)制串確定所述動(dòng)態(tài)口令,可以利用StToNum函數(shù)將所述二進(jìn)制串轉(zhuǎn)換成6~8位的十進(jìn)制數(shù),具體實(shí)現(xiàn)方式如下:
StToNum(P)=P[0]·2^(30)+P[1]·2^(29)+…+P[29]·2^(1)+P[30]·2^(0)。
客戶端可以以短信方式發(fā)送所述動(dòng)態(tài)口令至驗(yàn)證服務(wù)器。短信網(wǎng)關(guān)將客戶端發(fā)送的短信信息轉(zhuǎn)換后發(fā)送至所述驗(yàn)證服務(wù)器。
步驟S104:驗(yàn)證服務(wù)器根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令。
一般地,驗(yàn)證服務(wù)器在確定用戶ID的合法性后,可以從驗(yàn)證服務(wù)器數(shù)據(jù)庫(kù)中調(diào)用與所述用戶ID相應(yīng)的種子密鑰,還可以接收客戶端實(shí)時(shí)發(fā)送至的種子密鑰。驗(yàn)證服務(wù)器根據(jù)所述種子密鑰以及發(fā)送至客戶端的所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令。驗(yàn)證服務(wù)器計(jì)算生成驗(yàn)證口令時(shí),可以采用與客戶端相同的算法,在此情況下,所述驗(yàn)證服務(wù)器預(yù)先配置有與客戶端相同的動(dòng)態(tài)口令算法。當(dāng)然,驗(yàn)證服務(wù)器也可以采用與客戶端不同的算法,只需計(jì)算得到的動(dòng)態(tài)口令以及驗(yàn)證口令經(jīng)過(guò)一定的算法轉(zhuǎn)換后相匹配。同樣地,所述動(dòng)態(tài)口令的算法包括HMAC-SHA1、MD5、SHA-1以及SHA-256。
步驟S106:所述驗(yàn)證服務(wù)器判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
驗(yàn)證服務(wù)器比較所述動(dòng)態(tài)口令以及所述驗(yàn)證口令,如果匹配,則發(fā)送通過(guò)驗(yàn)證的確認(rèn)消息至客戶端。后續(xù)的,如果所述動(dòng)態(tài)口令以及所述驗(yàn)證口令不匹配,所述驗(yàn)證服務(wù)器可以發(fā)送未通過(guò)驗(yàn)證的回復(fù)消息至客戶端。
下面結(jié)合具體場(chǎng)景說(shuō)明上述本申請(qǐng)實(shí)施例的實(shí)現(xiàn)過(guò)程:
用戶A通過(guò)手機(jī)客戶端登錄某網(wǎng)站時(shí)的界面如圖2所示。用戶A輸入完用戶ID以及密碼后,需要進(jìn)行動(dòng)態(tài)口令身份驗(yàn)證。在圖2所示的界面上,用戶點(diǎn)擊“獲取動(dòng)態(tài)口令”按 鈕,所述按鈕觸發(fā)了手機(jī)客戶端獲取動(dòng)態(tài)口令的功能。首先,客戶端檢查手機(jī)設(shè)備是否連接網(wǎng)絡(luò)。如果手機(jī)設(shè)備安裝有Android系統(tǒng),客戶端可以調(diào)用isAvailable()函數(shù)檢查手機(jī)是否連接網(wǎng)絡(luò)。經(jīng)檢查,如果判斷手機(jī)客戶端設(shè)備連接網(wǎng)絡(luò),客戶端向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間。具體的,客戶端可以向驗(yàn)證服務(wù)器的時(shí)間同步接口發(fā)送Http請(qǐng)求所述服務(wù)器當(dāng)前時(shí)間,所述當(dāng)前時(shí)間可以是2015年1月22日下午兩點(diǎn)四十四分三秒。手機(jī)客戶端接收到驗(yàn)證服務(wù)器的服務(wù)器當(dāng)前時(shí)間后,讀取保存于本地的種子密鑰,所述種子密鑰可以是手機(jī)設(shè)備的15位IMEI碼,如“834299070186334”。在本實(shí)施例中,客戶端可以采用HMAC-SHA-1算法計(jì)算生成動(dòng)態(tài)口令。具體地,將所述種子密鑰以及服務(wù)器當(dāng)前時(shí)間初始化,獲取加密初值,計(jì)算所述加密初值的HMAC-SHA-1值,經(jīng)過(guò)截短后轉(zhuǎn)換成6~8位的動(dòng)態(tài)口令,如“453476”??蛻舳瞬⑺鰟?dòng)態(tài)口令發(fā)送至驗(yàn)證服務(wù)器。驗(yàn)證服務(wù)器接收所述動(dòng)態(tài)口令后,確定用戶的ID是否合法。確定所述ID的合法性后,驗(yàn)證服務(wù)器根據(jù)所述ID在服務(wù)器數(shù)據(jù)庫(kù)中調(diào)用與所述ID相對(duì)應(yīng)的種子密鑰。獲取所述種子密鑰后,驗(yàn)證服務(wù)器根據(jù)所述種子密鑰以及所述服務(wù)器當(dāng)前時(shí)間采用HMAC-SHA-1算法計(jì)算生成驗(yàn)證口令,所述HMAC-SHA-1算法預(yù)先配置于所述驗(yàn)證服務(wù)器中。生成驗(yàn)證口令后,所述驗(yàn)證服務(wù)器比較所述動(dòng)態(tài)口令以及驗(yàn)證口令,若兩者匹配,則通過(guò)驗(yàn)證,否則,未通過(guò)驗(yàn)證。
利用上述本申請(qǐng)的方法實(shí)施例一,在基于時(shí)間同步的動(dòng)態(tài)口令驗(yàn)證方法中,客戶端在生成動(dòng)態(tài)口令之前,與服務(wù)器產(chǎn)生一次通信,獲取服務(wù)器的當(dāng)前時(shí)間,實(shí)現(xiàn)客戶端生成動(dòng)態(tài)口令與驗(yàn)證服務(wù)器生成驗(yàn)證口令采用的時(shí)間因子的同步,從而提高了動(dòng)態(tài)口令與驗(yàn)證口令的匹配度。
下面介紹本方法實(shí)施例對(duì)應(yīng)的動(dòng)態(tài)口令驗(yàn)證的系統(tǒng)第一實(shí)施例,所述系統(tǒng)包括,
客戶端,用于向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器;
驗(yàn)證服務(wù)器,用于接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;返回服務(wù)器當(dāng)前時(shí)間至客戶端;根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證,否則未通過(guò)驗(yàn)證。
上述第一方法實(shí)施例,考慮以客戶端為主的步驟,可以演化為第二方法實(shí)施例,如圖3所示,包括:
步驟S301:向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;
步驟S302:接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;
步驟S303:根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器。
上述第二方法實(shí)施例,對(duì)應(yīng)的客戶端第一實(shí)施例400,如圖4所示,包括:
請(qǐng)求單元401,用于向驗(yàn)證服務(wù)器請(qǐng)求服務(wù)器當(dāng)前時(shí)間;
接收單元402,用于接收所述驗(yàn)證服務(wù)器返回的服務(wù)器當(dāng)前時(shí)間;
動(dòng)態(tài)口令生成單元403,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至所述驗(yàn)證服務(wù)器。
上述第一方法實(shí)施例,考慮以服務(wù)器為主的步驟,可以演化為第三方法實(shí)施例,如圖5所示,包括:
步驟S501:接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;
步驟S502:返回服務(wù)器當(dāng)前時(shí)間至客戶端;
步驟S503:接收客戶端返回的動(dòng)態(tài)口令;
步驟S504:根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
步驟S505:判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
上述第三方法實(shí)施例,對(duì)應(yīng)的服務(wù)器第一實(shí)施例600,如圖6所示,包括:
第一接收單元601,用于接收客戶端發(fā)來(lái)的服務(wù)器當(dāng)前時(shí)間請(qǐng)求;
返回單元602,用于返回服務(wù)器當(dāng)前時(shí)間至客戶端;
第二接收單元603,用于接收客戶端返回的動(dòng)態(tài)口令;
驗(yàn)證口令生成單元604,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
驗(yàn)證單元605,用于判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
上述第一方法實(shí)施例,考慮到客戶端沒(méi)有連接網(wǎng)絡(luò)的情況,可以演化為第四方法實(shí)施例。
如果檢查所述客戶端沒(méi)有連接網(wǎng)絡(luò),為了實(shí)現(xiàn)計(jì)算動(dòng)態(tài)口令以及驗(yàn)證口令的時(shí)間因子是同步的,可以讀取客戶端本地保存的服務(wù)器同步時(shí)間,根據(jù)所述服務(wù)器同步時(shí)間計(jì)算服務(wù)器當(dāng)前時(shí)間。具體實(shí)施步驟如圖7所示,包括:
步驟S701:客戶端讀取客戶端預(yù)存的服務(wù)器同步時(shí)間。
一般地,客戶端設(shè)備連接網(wǎng)絡(luò)時(shí),客戶端可以定期同步服務(wù)器時(shí)間,并將獲取的服務(wù)器同步時(shí)間以日志的形式保存于客戶端文件系統(tǒng)中。當(dāng)客戶端設(shè)備沒(méi)有連接網(wǎng)絡(luò)時(shí),客戶端可以從客戶端文件系統(tǒng)中讀取上一次保存的服務(wù)器同步時(shí)間,從而計(jì)算得到服務(wù)器當(dāng)前時(shí)間。
步驟S702:客戶端根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間。
客戶端可以根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間。具體地,客戶端當(dāng)前時(shí)間減去客戶端保存所述服務(wù)器同步時(shí)間時(shí)的時(shí)間,再加上所述服務(wù)器同步時(shí)間,就可以確定服務(wù)器當(dāng)前時(shí)間。上述方法包括步驟S1~S3:
S1:獲取存儲(chǔ)所述服務(wù)器同步時(shí)間時(shí)客戶端的第一時(shí)間;
S2:計(jì)算客戶端當(dāng)前時(shí)間和所述第一時(shí)間的差值;
S3:計(jì)算所述差值和所述服務(wù)器同步時(shí)間的和值,所述和值確定為所述服務(wù)器當(dāng)前時(shí)間。
舉個(gè)例子,客戶端設(shè)備當(dāng)前時(shí)間是2015年1月26日21點(diǎn)50分37秒,客戶端設(shè)備在2015年1月20日12點(diǎn)28分03秒同步了服務(wù)器時(shí)間并保存,服務(wù)器同步時(shí)間為2015年1月20日12點(diǎn)27分50秒,根據(jù)上述確定服務(wù)器當(dāng)前時(shí)間的計(jì)算方法,那么,服務(wù)器的當(dāng)前時(shí)間為2015年1月26日21點(diǎn)50分24秒。
步驟S703:客戶端根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器。
客戶端接收到服務(wù)器當(dāng)前時(shí)間后,根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令。動(dòng)態(tài)口令的算法包括單向散列函數(shù),例如HMAC-SHA1、MD5、SHA-1以及SHA-256。例如,本申請(qǐng)實(shí)施例采用HMAC-SHA1算法計(jì)算生成動(dòng)態(tài)口令,具體步驟參考第一方法實(shí)施例的SS1~SS4,在此不再贅述。
步驟S704:所述驗(yàn)證服務(wù)器接收所述動(dòng)態(tài)口令,根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令。
驗(yàn)證服務(wù)器在確定用戶ID的合法性后,可以從驗(yàn)證服務(wù)器數(shù)據(jù)庫(kù)中調(diào)用與所述用戶ID相應(yīng)的種子密鑰,還可以接收客戶端實(shí)時(shí)發(fā)送至的種子密鑰。驗(yàn)證服務(wù)器根據(jù)所述種子密鑰以及發(fā)送給客戶端的服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令。驗(yàn)證服務(wù)器計(jì)算生成驗(yàn)證口令時(shí),可以采用與客戶端相同的動(dòng)態(tài)口令算法,在此情況下,所述驗(yàn)證服務(wù)器預(yù)先配置有與客戶端相同的動(dòng)態(tài)口令算法。同樣地,所述動(dòng)態(tài)口令的算法包括HMAC-SHA1、MD5、SHA-1以及SHA-256。
步驟S705:所述驗(yàn)證服務(wù)器判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
驗(yàn)證服務(wù)器比較所述動(dòng)態(tài)口令以及所述驗(yàn)證口令,如果匹配,則發(fā)送通過(guò)驗(yàn)證的確認(rèn)消息至客戶端。后續(xù)的,如果所述動(dòng)態(tài)口令以及所述驗(yàn)證口令不匹配,所述驗(yàn)證服務(wù)器可以發(fā)送未通過(guò)驗(yàn)證的回復(fù)消息至客戶端。
下面結(jié)合具體場(chǎng)景說(shuō)明上述本申請(qǐng)實(shí)施例的實(shí)現(xiàn)過(guò)程:
同樣地,用戶A通過(guò)手機(jī)客戶端登錄某網(wǎng)站時(shí)的界面如圖2所示。用戶點(diǎn)擊“獲取動(dòng)態(tài)口令”按鈕,所述按鈕觸發(fā)了手機(jī)客戶端獲取動(dòng)態(tài)口令的功能。首先,客戶端檢查手機(jī)設(shè)備是否連接網(wǎng)絡(luò)。如果手機(jī)設(shè)備安裝有Android系統(tǒng),客戶端可以調(diào)用isAvailable()函數(shù)檢查手機(jī)是否連接網(wǎng)絡(luò)。經(jīng)檢查,如果判斷手機(jī)客戶端設(shè)備未連接網(wǎng)絡(luò),客戶端讀取客戶端設(shè)備文件系統(tǒng)中上一次保存的服務(wù)器同步時(shí)間。根據(jù)所述服務(wù)器同步時(shí)間計(jì)算生成服務(wù)器當(dāng)前時(shí)間,具體計(jì)算方法參考步驟S702。手機(jī)客戶端確定服務(wù)器當(dāng)前時(shí)間后,讀取保存于本地的種子密鑰,所述種子密鑰可以手機(jī)設(shè)備的15位IMEI碼,如“834299070186334”。在本實(shí)施例中,客戶端可以采用HMAC-SHA-1算法計(jì)算生成動(dòng)態(tài)口令。具體地,將所述種子密鑰以及服務(wù)器當(dāng)前時(shí)間初始化,獲取加密初值,計(jì)算所述加密初值的HMAC-SHA-1值,經(jīng)過(guò)截短后轉(zhuǎn)換成6~8位的動(dòng)態(tài)口令,如“453476”。客戶端并將所述動(dòng)態(tài)口令發(fā)送至驗(yàn)證服務(wù)器。驗(yàn)證服務(wù)器接收所述動(dòng)態(tài)口令后,確定用戶的ID是否合法。經(jīng)確定所述ID的合法性后,驗(yàn)證服務(wù)器根據(jù)所述ID在服務(wù)器數(shù)據(jù)庫(kù)中調(diào)用與所述ID相對(duì)應(yīng)的種子密鑰。獲取所述種子密鑰后,驗(yàn)證服務(wù)器根據(jù)所述種子密鑰以及所述服務(wù)器當(dāng)前時(shí)間采用HMAC-SHA-1算法計(jì)算生成驗(yàn)證口令,所述HMAC-SHA-1算法預(yù)先配置于所述驗(yàn)證服務(wù)器中。生成驗(yàn)證口令后,所述驗(yàn)證服務(wù)器比較所述動(dòng)態(tài)口令以及驗(yàn)證口令,若兩者相同,則此次驗(yàn)證成功,否則,驗(yàn)證不成功。
利用上述本申請(qǐng)的方法實(shí)施例四,在基于時(shí)間同步的動(dòng)態(tài)口令驗(yàn)證方法中,在客戶端沒(méi)有連接網(wǎng)絡(luò)的情況下,根據(jù)保存于客戶端文件系統(tǒng)中的服務(wù)器同步時(shí)間,確定服務(wù)器當(dāng)前時(shí)間,從而實(shí)現(xiàn)客戶端計(jì)算動(dòng)態(tài)口令與驗(yàn)證服務(wù)器計(jì)算驗(yàn)證口令采用的時(shí)間因子的同步,提高了動(dòng)態(tài)口令與驗(yàn)證口令的匹配度。
下面介紹本方法實(shí)施例對(duì)應(yīng)的動(dòng)態(tài)口令驗(yàn)證的系統(tǒng)第二實(shí)施例,所述系統(tǒng)包括,
客戶端,用于讀取預(yù)存的服務(wù)器同步時(shí)間;根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器;
驗(yàn)證服務(wù)器,用于接收客戶端返回的動(dòng)態(tài)口令;根據(jù)所述服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
上述第四方法實(shí)施例,考慮以客戶端為主的步驟,可以演化為第五方法實(shí)施例,如圖8所示,包括:
步驟S801:讀取預(yù)存的服務(wù)器同步時(shí)間;
步驟S802:根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;
步驟S803:根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器。
上述第五方法實(shí)施例,對(duì)應(yīng)的客戶端第二實(shí)施例900,如圖9所示,包括:
讀取單元901,用于讀取預(yù)存的服務(wù)器同步時(shí)間;
時(shí)間確定單元902,用于根據(jù)所述服務(wù)器同步時(shí)間確定服務(wù)器當(dāng)前時(shí)間;
動(dòng)態(tài)口令生成單元903,用于根據(jù)所述服務(wù)器當(dāng)前時(shí)間,計(jì)算生成動(dòng)態(tài)口令,并將所述動(dòng)態(tài)口令上傳至驗(yàn)證服務(wù)器。
如圖10所示,所述時(shí)間確定單元902包括:
獲取單元1001,用于獲取存儲(chǔ)所述服務(wù)器同步時(shí)間時(shí)客戶端的第一時(shí)間;
第一計(jì)算單元1002,用于計(jì)算獲取客戶端當(dāng)前時(shí)間和所述第一時(shí)間的差值;
第二計(jì)算單元1003,用于計(jì)算所述差值和所述服務(wù)器同步時(shí)間的和值,所述和值確定為所述服務(wù)器當(dāng)前時(shí)間。
上述第四方法實(shí)施例,考慮以服務(wù)器為主的步驟,可以演化為第六方法實(shí)施例,如圖11所示,包括:
步驟S1101:接收客戶端返回的動(dòng)態(tài)口令;
步驟S1102:根據(jù)服務(wù)器當(dāng)前時(shí)間值,計(jì)算生成驗(yàn)證口令;
步驟S1103:判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
上述第六方法實(shí)施例,對(duì)應(yīng)的服務(wù)器第二實(shí)施例1200,如圖12所示,包括:
接收單元1201,用于接收客戶端返回的動(dòng)態(tài)口令;、
驗(yàn)證口令生成單元1202,用于根據(jù)服務(wù)器當(dāng)前時(shí)間,計(jì)算生成驗(yàn)證口令;
驗(yàn)證單元1203,用于判斷所述動(dòng)態(tài)口令和所述驗(yàn)證口令是否匹配,如果匹配則通過(guò)驗(yàn)證。
在20世紀(jì)90年代,對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開(kāi)關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過(guò)將改進(jìn)的方法流程編程到硬件電路中來(lái)得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說(shuō)一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來(lái)實(shí)現(xiàn)。例如,可編程邏輯器件(Programmable Logic Device,PLD)(例如現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,F(xiàn)PGA))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來(lái)確定。由設(shè)計(jì)人員自行編程來(lái)把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不需要請(qǐng)芯片制造廠商來(lái)設(shè)計(jì)和制 作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟件來(lái)實(shí)現(xiàn),它與程序開(kāi)發(fā)撰寫(xiě)時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語(yǔ)言來(lái)撰寫(xiě),此稱之為硬件描述語(yǔ)言(Hardware Description Language,HDL),而HDL也并非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語(yǔ)言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門(mén)、開(kāi)關(guān)、專用集成電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。
本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過(guò)將方法步驟進(jìn)行邏輯編程來(lái)使得控制器以邏輯門(mén)、開(kāi)關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來(lái)實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。該計(jì)算機(jī)軟件產(chǎn)品可以 包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在內(nèi)存中,內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括短暫電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
雖然通過(guò)實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。