基于http接口的加解密方法、裝置及系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)公開了一種基于HTTP接口的加解密方法、裝置及系統(tǒng)。該方法包括:當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了API列表信息;當(dāng)存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求;其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。該方法可提高數(shù)據(jù)傳輸?shù)陌踩浴?br>【專利說明】
基于HTTP接口的加解密方法、裝置及系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及加解密技術(shù)領(lǐng)域,具體而言,涉及一種基于HTTP接口的加解密方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]目前大部分的移動(dòng)客戶端與服務(wù)器之間的通信都是基于HTTP接口協(xié)議而進(jìn)行的。為了保證接口傳輸?shù)陌踩?,保證用戶的利益,通常需要對(duì)HTTP接口中傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理?,F(xiàn)有的幾種加密方式,如HTTP對(duì)稱加密方式及非對(duì)稱加密方式均存在密文容易被破解,傳輸安全性低的問題,而HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer,超文本傳輸協(xié)議安全)貝Ij由于其方式比較復(fù)雜,需要購買安全證書等原因而導(dǎo)致使用成本高。
[0003]在所述【背景技術(shù)】部分公開的上述信息僅用于加強(qiáng)對(duì)本發(fā)明的背景的理解,因此它可以包括不構(gòu)成對(duì)本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種基于HTTP接口的加解密方法、裝置及系統(tǒng),能夠有效提高數(shù)據(jù)傳輸?shù)陌踩郧伊鞒毯?jiǎn)單。
[0005]本發(fā)明的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本發(fā)明的實(shí)踐而習(xí)得。
[0006]根據(jù)本發(fā)明的一方面,提供了一種基于HTTP接口的加解密方法,適用于客戶端,包括:當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了API列表信息;當(dāng)存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求;其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。
[0007]根據(jù)本發(fā)明的一實(shí)施方式,所述方法還包括:當(dāng)沒有存儲(chǔ)所述API列表信息時(shí),向所述服務(wù)器發(fā)送HTTP接口API列表請(qǐng)求;以及接收并存儲(chǔ)所述服務(wù)器返回的所述API列表信息;其中,所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。
[0008]根據(jù)本發(fā)明的一實(shí)施方式,每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)、并以所述隨機(jī)數(shù)作為密鑰對(duì)所述API的名字采用對(duì)稱加密方式進(jìn)行加密后的密文。
[0009]根據(jù)本發(fā)明的一實(shí)施方式,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述方法還包括:當(dāng)確定沒有存儲(chǔ)在所述非對(duì)稱加密方式中使用的加密公鑰時(shí),向所述服務(wù)器發(fā)送加密公鑰請(qǐng)求;以及接收并存儲(chǔ)從所述服務(wù)器接收的所述加密公鑰;其中,所述加密公鑰為采用對(duì)稱加密方式加密后的密文,且在所述對(duì)稱加密方式中使用的密鑰為所述客戶端的設(shè)備號(hào)。
[0010]根據(jù)本發(fā)明的另一方面,提供了一種基于HTTP接口的加解密方法,適用于服務(wù)器,包括:接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文;從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功;當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及當(dāng)對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。
[0011]根據(jù)本發(fā)明的一實(shí)施方式,所述方法還包括:接收所述客戶端發(fā)送的HTTP接口API列表請(qǐng)求,其中所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;從所述HTTP接口 API列表請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);對(duì)所述第二請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第二請(qǐng)求內(nèi)容是否解密成功;當(dāng)對(duì)所述第二請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名;以及將由每個(gè)API的名字及其對(duì)應(yīng)的所述API訪問名組成的API列表信息返回給所述客戶端。
[0012]根據(jù)本發(fā)明的一實(shí)施方式,根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名包括:根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù);以所述隨機(jī)數(shù)為密鑰,對(duì)所述API列表中的每個(gè)API的名字以對(duì)稱加密方式進(jìn)行加密,以分別獲得其對(duì)應(yīng)的所述API訪問名;以及以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述隨機(jī)數(shù)。
[0013]根據(jù)本發(fā)明的一實(shí)施方式,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述方法還包括:當(dāng)確定用于所述非對(duì)稱加密方式的所述客戶端的設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),或者當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密失敗時(shí),或者當(dāng)對(duì)所述待訪問API的API訪問名解密失敗時(shí),或者當(dāng)對(duì)所述第二請(qǐng)求內(nèi)容解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。
[0014]根據(jù)本發(fā)明的一實(shí)施方式,所述方法還包括:接收所述客戶端發(fā)送的加密公鑰請(qǐng)求,所述加密公鑰請(qǐng)求包含所述客戶端的設(shè)備號(hào);為所述客戶端生成一對(duì)密鑰對(duì);以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述密鑰對(duì),并設(shè)置存儲(chǔ)失效時(shí)間;以所述客戶端的設(shè)備號(hào)為密鑰,對(duì)所述密鑰對(duì)中的公鑰采用對(duì)稱加密方式進(jìn)行加密;以及將加密后的所述密鑰對(duì)中的公鑰返回給所述客戶端。
[0015]根據(jù)本發(fā)明的再一方面,提供了一種基于HTTP接口的加解密裝置,適用于客戶端,包括:存儲(chǔ)確定模塊,用于當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了 API列表信息;訪問名獲取模塊,用于當(dāng)所述存儲(chǔ)確定模塊確定存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及HTTP請(qǐng)求發(fā)送模塊,用于向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求;其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。
[0016]根據(jù)本發(fā)明的一實(shí)施方式,所述裝置還包括:API請(qǐng)求發(fā)送模塊,用于當(dāng)所述存儲(chǔ)確定模塊確定沒有存儲(chǔ)所述API列表信息時(shí),向所述服務(wù)器發(fā)送HTTP接口 API列表請(qǐng)求;以及API列表接收模塊,用于接收并存儲(chǔ)所述服務(wù)器返回的所述API列表信息;其中,所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。
[0017]根據(jù)本發(fā)明的一實(shí)施方式,每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)、并以所述隨機(jī)數(shù)作為密鑰對(duì)所述API的名字采用對(duì)稱加密方式進(jìn)行加密后的密文。
[0018]根據(jù)本發(fā)明的一實(shí)施方式,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述裝置還包括:公鑰請(qǐng)求發(fā)送模塊,用于當(dāng)確定沒有存儲(chǔ)在所述非對(duì)稱加密方式中使用的加密公鑰時(shí),向所述服務(wù)器發(fā)送加密公鑰請(qǐng)求;以及公鑰接收模塊,用于接收并存儲(chǔ)從所述服務(wù)器接收的所述加密公鑰;其中,所述加密公鑰為采用對(duì)稱加密方式加密后的密文,且在所述對(duì)稱加密方式中使用的密鑰為所述客戶端的設(shè)備號(hào)。
[0019]根據(jù)本發(fā)明再一方面,提供了一種基于HTTP接口的加解密裝置,適用于服務(wù)器,包括:HTTP請(qǐng)求接收模塊,用于接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文;第一設(shè)備號(hào)獲取模塊,用于從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);第一請(qǐng)求解密模塊,用于對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功;訪問名解密模塊,用于當(dāng)所述第一請(qǐng)求解密模塊確定對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及HTTP請(qǐng)求處理模塊,用于當(dāng)所述訪問名解密模塊確定對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。
[0020]根據(jù)本發(fā)明的一實(shí)施方式,所述裝置還包括:API請(qǐng)求接收模塊,用于接收所述客戶端發(fā)送的HTTP接口 API列表請(qǐng)求,其中所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;第二設(shè)備號(hào)讀取模塊,用于從所述HTTP接口 API列表請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);第二請(qǐng)求解密模塊,用于對(duì)所述第二請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第二請(qǐng)求內(nèi)容是否解密成功;API列表生成模塊,用于當(dāng)所述第二請(qǐng)求解密模塊確定對(duì)所述第二請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名;以及API列表發(fā)送模塊,用于將由每個(gè)API的名字及其對(duì)應(yīng)的所述API訪問名組成的API列表信息返回給所述客戶端。
[0021]根據(jù)本發(fā)明的一實(shí)施方式,所述API列表生成模塊包括:隨機(jī)數(shù)生成子模塊,用于根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù);API加密子模塊,用于以所述隨機(jī)數(shù)為密鑰,對(duì)所述API列表中的每個(gè)API的名字以對(duì)稱加密方式進(jìn)行加密,以分別獲得其對(duì)應(yīng)的所述API訪問名;以及隨機(jī)數(shù)存儲(chǔ)子模塊,用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述隨機(jī)數(shù)。
[0022]根據(jù)本發(fā)明的一實(shí)施方式,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述裝置還包括:密鑰錯(cuò)誤響應(yīng)模塊,當(dāng)確定用于所述非對(duì)稱加密方式的所述客戶端的設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),或者當(dāng)所述第一請(qǐng)求解密模塊確定對(duì)所述第一請(qǐng)求內(nèi)容解密失敗時(shí),或者當(dāng)所述訪問名解密模塊確定對(duì)所述待訪問API的API訪問名解密失敗時(shí),或者當(dāng)?shù)诙?qǐng)求解密模塊確定對(duì)所述第二請(qǐng)求內(nèi)容解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。
[0023]根據(jù)本發(fā)明的一實(shí)施方式,所述裝置還包括:公鑰請(qǐng)求接收模塊,用于接收所述客戶端發(fā)送的加密公鑰請(qǐng)求,所述加密公鑰請(qǐng)求包含所述客戶端的設(shè)備號(hào);密鑰對(duì)生成模塊,用于為所述客戶端生成一對(duì)密鑰對(duì);密鑰對(duì)存儲(chǔ)模塊,用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述密鑰對(duì),并設(shè)置存儲(chǔ)失效時(shí)間;公鑰加密模塊,用于以所述客戶端的設(shè)備號(hào)為密鑰,對(duì)所述密鑰對(duì)中的公鑰采用對(duì)稱加密方式進(jìn)行加密;以及公鑰發(fā)送模塊,用于將加密后的所述密鑰對(duì)中的公鑰返回給所述客戶端。
[0024]根據(jù)本發(fā)明的再一方面,提供了一種基于HTTP接口的加解密系統(tǒng),適用于客戶端,包括:處理器;以及存儲(chǔ)器,用于存儲(chǔ)所述處理器的可執(zhí)行指令;其中所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行以下操作:當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了API列表信息;當(dāng)存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求;其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。
[0025]根據(jù)本發(fā)明再一方面,提供了一種基于HTTP接口的加解密系統(tǒng),適用于服務(wù)器,包括:處理器;以及存儲(chǔ)器,用于存儲(chǔ)所述處理器的可執(zhí)行指令;其中所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行以下操作:接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文;從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功;當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及當(dāng)對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。
[0026]根據(jù)本發(fā)明的基于HTTP接口的加解密方法,在所傳輸?shù)腍TTP接口數(shù)據(jù)中采用兩級(jí)的加密方式,除了對(duì)傳輸內(nèi)容進(jìn)行加密外,HTTP請(qǐng)求中的API名字也是根據(jù)客戶端的設(shè)備號(hào)進(jìn)行加密的密文,從而起到保護(hù)API地址的作用。相比于現(xiàn)有技術(shù),該方法流程簡(jiǎn)單,且密鑰不容易被破解,提高了數(shù)據(jù)傳輸?shù)陌踩浴?br>[0027]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本發(fā)明。
【附圖說明】
[0028]通過參照附圖詳細(xì)描述其示例實(shí)施例,本發(fā)明的上述和其它目標(biāo)、特征及優(yōu)點(diǎn)將變得更加顯而易見。
[0029]圖1是根據(jù)部分實(shí)施方式示出的本發(fā)明所涉及的網(wǎng)絡(luò)架構(gòu)的示意圖。
[0030]圖2是根據(jù)一示例性實(shí)施方式示出的一種基于HTTP接口的加解密方法的流程圖。
[0031]圖3是根據(jù)一示例性實(shí)施方式示出的另一種基于HTTP接口的加解密方法的流程圖。
[0032]圖4是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖。
[0033]圖5是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖。
[0034]圖6是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖。
[0035]圖7是根據(jù)一示例性實(shí)施方式示出的一種基于HTTP接口的加解密裝置的框圖。
[0036]圖8是根據(jù)一示例性實(shí)施方式示出的另一種基于HTTP接口的加解密裝置的框圖。
[0037]圖9是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖。
[0038]圖10是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖。
[0039]圖11是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖。
【具體實(shí)施方式】
[0040]現(xiàn)在將參考附圖更全面地描述示例實(shí)施方式。然而,示例實(shí)施方式能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實(shí)施方式使得本發(fā)明將更加全面和完整,并將示例實(shí)施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。附圖僅為本發(fā)明的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對(duì)它們的重復(fù)描述。
[0041]此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施方式中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對(duì)本發(fā)明的實(shí)施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識(shí)到,可以實(shí)踐本發(fā)明的技術(shù)方案而省略所述特定細(xì)節(jié)中的一個(gè)或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知結(jié)構(gòu)、方法、裝置、實(shí)現(xiàn)或者操作以避免喧賓奪主而使得本發(fā)明的各方面變得模糊。
[0042]為了便于理解本發(fā)明的【具體實(shí)施方式】,先對(duì)本發(fā)明所涉及的網(wǎng)絡(luò)架構(gòu)進(jìn)行說明。圖1是根據(jù)部分實(shí)施方式示出的本發(fā)明所涉及的網(wǎng)絡(luò)架構(gòu)的示意圖。如圖1所示,網(wǎng)絡(luò)架構(gòu)I包括:客戶端2和服務(wù)器3。
[0043]客戶端2可以實(shí)現(xiàn)于智能手機(jī)、平板電腦、筆記本電腦等智能終端中。客戶端2可以包括:加解密組件模塊21及接口內(nèi)容處理模塊22。
[0044]加解密組件模塊21用于從服務(wù)器3獲取加解密密鑰,根據(jù)密鑰執(zhí)行加解密操作。加解密組件模塊21例如可以實(shí)施為一個(gè)C或C++語言編寫的組件(Android操作系統(tǒng)以.so文件提供,1S操作系統(tǒng)以.a文件提供),采用這種方式可以避免加解密方式被破解。
[0045]接口內(nèi)容處理模塊22用于處理與服務(wù)器3之間的接口消息,如發(fā)起請(qǐng)求及接收返回內(nèi)容等。
[0046]服務(wù)器3可以包括:加解密模塊31、接口管理模塊32及接口處理模塊33。
[0047]加解密模塊31用于對(duì)從客戶端2接收的HTTP請(qǐng)求以及給客戶端返回的HTTP響應(yīng)進(jìn)行加解密處理。
[0048]接口管理模塊32 用于對(duì)API (Applicat1n Program Interface,應(yīng)用程序接口)的名字進(jìn)行管理。
[0049]接口處理模塊33用于處理與客戶端2之間接口的業(yè)務(wù)邏輯。
[0050]以上對(duì)本發(fā)明所涉及的網(wǎng)絡(luò)架構(gòu)進(jìn)行了說明,下面將進(jìn)一步描述本發(fā)明所公開的【具體實(shí)施方式】。
[0051]圖2是根據(jù)一示例性實(shí)施方式示出的一種基于HTTP接口的加解密方法的流程圖,該方法可應(yīng)用于圖1所示的客戶端2中。如圖2所示,該方法10包括:
[0052]在步驟S102中,當(dāng)需要向服務(wù)器3獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了API列表信息。
[0053]例如,當(dāng)客戶端2接收到用戶的某個(gè)操作而需要向服務(wù)器3獲取數(shù)據(jù)時(shí),客戶端2確定是否存儲(chǔ)了 API列表信息。
[0054]該API列表信息包括至少一個(gè)API的信息,每個(gè)API的信息至少包括:該API的名字及其訪問名。其中,該API的名字為明文,而該API的訪問名為對(duì)API的名字進(jìn)行加密后的密文,具體地API的訪問名為由服務(wù)器3提供的根據(jù)客戶端2的設(shè)備號(hào)對(duì)API的名字進(jìn)行加密后得到的密文。
[0055]在步驟S104中,當(dāng)存儲(chǔ)了API列表信息時(shí),從API列表信息中獲取待訪問的API對(duì)應(yīng)的API訪問名。
[0056]例如,可以由客戶端2的接口內(nèi)容處理模塊22先判斷客戶端2中是否存儲(chǔ)有API列表信息。當(dāng)內(nèi)容處理模塊22判斷客戶端2中存儲(chǔ)了API列表信息時(shí),由加解密組件模塊21從API列表信息中獲取待訪問的API對(duì)應(yīng)的API訪問名。
[0057]在步驟S106中,向服務(wù)器3發(fā)起HTTP請(qǐng)求。
[0058]該HTTP請(qǐng)求中包括:含有待訪問API的訪問名的請(qǐng)求內(nèi)容以及客戶端2的設(shè)備號(hào),其中請(qǐng)求內(nèi)容為密文,客戶端2的設(shè)備號(hào)為明文。其中,設(shè)備號(hào)為可以唯一標(biāo)識(shí)客戶端2所應(yīng)用的終端設(shè)備的設(shè)備標(biāo)號(hào),如可以為移動(dòng)終端設(shè)備的IMEI (Internat1nal Mobi IeEquipment Identity,國(guó)際移動(dòng)設(shè)備標(biāo)識(shí)),或者也可以是移動(dòng)終端設(shè)備中安裝的SIM卡的標(biāo)號(hào)IMSI(Internat1nal Mobile Subscriber Identificat1n Number,國(guó)際移動(dòng)用戶識(shí)別碼),再或者也可以是終端設(shè)備的(PU標(biāo)號(hào)、網(wǎng)卡標(biāo)號(hào)等,本發(fā)明不以此為限。
[0059]例如,可以由加解密組件模塊21對(duì)請(qǐng)求內(nèi)容進(jìn)行加密,如上所述,該請(qǐng)求內(nèi)容中包括有API的訪問名。對(duì)請(qǐng)求內(nèi)容的加密方式可以為對(duì)稱加密,即客戶端2和服務(wù)器3中采用固定的密鑰,且兩者采用的密鑰一致。客戶端2和服務(wù)器3采用相同的且固定的密鑰分別進(jìn)行傳輸數(shù)據(jù)的加解密操作。或者,也可以采用非對(duì)稱加密,即服務(wù)器3根據(jù)客戶端2的請(qǐng)求,隨機(jī)生成一對(duì)密鑰對(duì),并將其中的公鑰返回給客戶端2。之后在數(shù)據(jù)傳輸過程中,客戶端2采用公鑰進(jìn)行加解密操作,服務(wù)器3則采用私鑰進(jìn)行加解密操作。為了提高加解密的安全性,本發(fā)明實(shí)施方式優(yōu)選非對(duì)稱加密方式。
[0060]本發(fā)明實(shí)施方式的基于HTTP接口的加解密方法,在所傳輸?shù)腍TTP接口數(shù)據(jù)中采用兩級(jí)的加密方式,除了對(duì)傳輸內(nèi)容進(jìn)行加密外,HTTP請(qǐng)求中的API名字也是根據(jù)客戶端的設(shè)備號(hào)進(jìn)行加密的密文,從而起到保護(hù)API地址的作用。相比于現(xiàn)有技術(shù),該方法流程簡(jiǎn)單,且密鑰不容易被破解,提高了數(shù)據(jù)傳輸?shù)陌踩浴?br>[0061]圖3是根據(jù)一示例性實(shí)施方式示出的另一種基于HTTP接口的加解密方法的流程圖,該方法可應(yīng)用于圖1所示的服務(wù)器3中。如圖3所示,該方法20包括:
[0062]在步驟S202中,接收客戶端2發(fā)送的HTTP請(qǐng)求。
[0063]例如,由服務(wù)器3的接口處理模塊33接收客戶端2發(fā)送的HTTP請(qǐng)求。
[0064]在步驟S204中,從HTTP請(qǐng)求中讀取客戶端2的設(shè)備號(hào)。
[0065]例如,由加解密模塊31從HTTP請(qǐng)求中讀取客戶端2的設(shè)備號(hào)。
[0066]在步驟S206中,對(duì)HTTP請(qǐng)求中的請(qǐng)求內(nèi)容進(jìn)行解密。
[0067]在本步驟中,如果該HTTP請(qǐng)求中的請(qǐng)求內(nèi)容采用的是對(duì)稱加密方式,則服務(wù)器3使用與客戶端2相同的固定密鑰,對(duì)請(qǐng)求內(nèi)容進(jìn)行解密。
[0068]而如果該HTTP請(qǐng)求中的請(qǐng)求內(nèi)容采用的是非對(duì)稱加密方式,則服務(wù)器3首先根據(jù)讀取的客戶端2的設(shè)備號(hào),檢測(cè)該設(shè)備號(hào)對(duì)應(yīng)存儲(chǔ)的密鑰對(duì)是否失效,例如可以通過加解密模塊31進(jìn)行該檢測(cè)。當(dāng)服務(wù)器3檢測(cè)到該設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)沒有失效時(shí),根據(jù)獲取的密鑰對(duì)中的私鑰對(duì)HTTP請(qǐng)求的內(nèi)容進(jìn)行解密;而當(dāng)服務(wù)器3檢測(cè)到該設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),服務(wù)器3可以向客戶端2返回密鑰錯(cuò)誤的響應(yīng),以使客戶端2清理其存儲(chǔ)的密鑰對(duì)信息以及API列表信息。
[0069]在步驟S208中,判斷對(duì)HTTP請(qǐng)求中的請(qǐng)求內(nèi)容是否解密成功,如果解密成功則進(jìn)入步驟S210;否則,進(jìn)入步驟S220。
[0070]例如可以由服務(wù)器3的加解密模塊31執(zhí)行上述判斷。
[0071]在步驟S210中,根據(jù)讀取的客戶端2的設(shè)備號(hào),對(duì)該請(qǐng)求內(nèi)容中的API訪問名進(jìn)行解密。
[0072]例如,可以由服務(wù)器3的加解密模塊31進(jìn)行該解密操作。在一些實(shí)施例中,首先,月艮務(wù)器3根據(jù)讀取的客戶端2的設(shè)備號(hào),獲取存儲(chǔ)的隨機(jī)數(shù)信息;其次,服務(wù)器3以該隨機(jī)數(shù)信息對(duì)API訪問名進(jìn)行解密。
[0073]在步驟S212中,判斷對(duì)API訪問名的解密是否成功,如果成功則進(jìn)入步驟S214中;否則,進(jìn)入步驟S220。
[0074]例如可以由服務(wù)器3的加解密模塊31執(zhí)行上述判斷。
[0075]在步驟S214中,得到該API訪問名對(duì)應(yīng)的API的名字,以獲取該API的地址。
[0076]例如,可以由服務(wù)器3的加解密模塊31執(zhí)行上述操作。
[0077]在步驟S216中,處理該HTTP請(qǐng)求,根據(jù)獲取的API地址,獲得響應(yīng)結(jié)果。
[0078]例如,可以由服務(wù)器3的接口處理模塊33執(zhí)行上述操作。
[0079]在步驟S218中,對(duì)響應(yīng)結(jié)果進(jìn)行加密后,將密文返回給客戶端2。
[0080]例如,可以由加解密模塊31進(jìn)行該加密操作,再由接口處理模塊33將加密后的響應(yīng)結(jié)果返回給客戶端2。[0081 ]其中,對(duì)響應(yīng)結(jié)果可以采用對(duì)稱加密,也可以采用非對(duì)稱加密。本發(fā)明實(shí)施方式優(yōu)選采用非對(duì)稱加密,且非對(duì)稱加密所使用的密鑰對(duì)與對(duì)HTTP請(qǐng)求的請(qǐng)求內(nèi)容所采用的非對(duì)稱加密的密鑰對(duì)相同。但本發(fā)明不以此為例。
[0082]在步驟S220中,向客戶端2返回密鑰錯(cuò)誤響應(yīng),以使客戶端2清理其所存儲(chǔ)的API列表信息。
[0083 ]需要說明的是,如果客戶端2與服務(wù)器3之間的接口數(shù)據(jù)(包括HTTP請(qǐng)求、HTTP接口API列表請(qǐng)求、響應(yīng)結(jié)果等)傳輸采用的是非對(duì)稱加解密,則服務(wù)器3向客戶端2返回密鑰錯(cuò)誤響應(yīng),則還需要使客戶端2清理其所存儲(chǔ)的密鑰對(duì)信息。
[0084]本發(fā)明實(shí)施方式的基于HTTP接口的加解密方法,在所傳輸?shù)腍TTP接口數(shù)據(jù)中采用兩級(jí)的加密方式,除了對(duì)傳輸內(nèi)容進(jìn)行加密外,HTTP請(qǐng)求中的API名字也是根據(jù)客戶端的設(shè)備號(hào)進(jìn)行加密的密文,從而起到保護(hù)API地址的作用。相比于現(xiàn)有技術(shù),該方法流程簡(jiǎn)單,且密鑰不容易被破解,提高了數(shù)據(jù)傳輸?shù)陌踩浴?br>[0085]應(yīng)清楚地理解,本發(fā)明描述了如何形成和使用特定示例,但本發(fā)明的原理不限于這些示例的任何細(xì)節(jié)。相反,基于本發(fā)明公開的內(nèi)容的教導(dǎo),這些原理能夠應(yīng)用于許多其它實(shí)施方式。
[0086]圖4是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖,該方法可應(yīng)用于圖1所示的客戶端2中。如圖4所示,該方法30包括:
[0087]在步驟S302中,當(dāng)準(zhǔn)備向服務(wù)器3發(fā)起獲取數(shù)據(jù)的HTTP請(qǐng)求,而沒有存儲(chǔ)API列表信息時(shí),或者當(dāng)接收到服務(wù)器3返回的密鑰錯(cuò)誤響應(yīng)時(shí),向服務(wù)器3發(fā)送HTTP接口 API列表請(qǐng)求。
[0088]API列表請(qǐng)求中包括請(qǐng)求內(nèi)容和客戶端2的設(shè)備號(hào)。其中請(qǐng)求內(nèi)容為經(jīng)加密處理的密文,設(shè)備號(hào)則以明文傳遞。
[0089]例如,可以由加解密組件模塊21對(duì)請(qǐng)求內(nèi)容進(jìn)行加密。對(duì)請(qǐng)求內(nèi)容的加密方式可以采用對(duì)稱加密,也可以采用非對(duì)稱加密。本實(shí)施方式優(yōu)選采用非對(duì)稱加密。而當(dāng)采用非對(duì)稱加密時(shí),客戶端2的加解密組件模塊21還需要判斷當(dāng)前是否存儲(chǔ)有非對(duì)稱加密所使用的公鑰。如果沒有存儲(chǔ)該公鑰,客戶端2還需要向服務(wù)器3發(fā)起加密公鑰請(qǐng)求,該請(qǐng)求中攜帶有客戶端2的設(shè)備號(hào)。并等待服務(wù)器3返回所請(qǐng)求的公鑰。在一些實(shí)施例中,服務(wù)器3返回的該公鑰還可以是以客戶端2的設(shè)備號(hào)作為固定密鑰進(jìn)行對(duì)稱加密處理的密文。因此客戶端2還需要使用其設(shè)備號(hào)作為密鑰解密該公鑰的密文,從而得到該公鑰。
[0090]在步驟S304中,接收并存儲(chǔ)服務(wù)器3發(fā)送的API列表信息。
[0091]如上所述,該API列表信息中包括至少一個(gè)API的信息,每個(gè)API的信息至少包括:該API的名字及其訪問名。其中,該API的名字為明文,而該API的訪問名為對(duì)API的名字進(jìn)行加密后的密文,具體地API的訪問名為由服務(wù)器3提供的根據(jù)客戶端2的設(shè)備號(hào)對(duì)API的名字進(jìn)行加密后得到的密文。
[0092]本發(fā)明實(shí)施方式的基于HTTP接口的加解密方法,進(jìn)一步提供了客戶端如何從服務(wù)器獲取API列表信息的方法,API列表信息中包括有每個(gè)API的名字及對(duì)應(yīng)的API訪問名,其中API訪問名為API名字的密文。從而使得客戶端在發(fā)起HTTP請(qǐng)求時(shí),能夠在請(qǐng)求中攜帶有經(jīng)服務(wù)器根據(jù)客戶端的設(shè)備號(hào)加密的密文API名稱。
[0093]圖5是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖,該方法可應(yīng)用于圖1所示的服務(wù)器3中。如圖5所示,該方法40包括:
[0094]在步驟S402中,接收客戶端2發(fā)送的HTTP接口API列表請(qǐng)求。
[0095]例如,由服務(wù)器3的接口處理模塊33接收客戶端2發(fā)送的HTTP接口API列表請(qǐng)求。
[0096]在步驟S404中,從HTTP接口API列表請(qǐng)求中讀取客戶端2的設(shè)備號(hào)。
[0097]例如,由加解密模塊31從HTTP接口API列表請(qǐng)求中讀取客戶端2的設(shè)備號(hào)。
[0098]在步驟S406中,對(duì)HTTP接口API列表請(qǐng)求中的請(qǐng)求內(nèi)容進(jìn)行解密。
[0099]在本步驟中,如果該HTTP接口 API列表請(qǐng)求中的請(qǐng)求內(nèi)容采用的是對(duì)稱加密方式,則服務(wù)器3使用與客戶端2相同的固定密鑰,對(duì)請(qǐng)求內(nèi)容進(jìn)行解密。
[0100]而如果該HTTP接口API列表請(qǐng)求中的請(qǐng)求內(nèi)容采用的是非對(duì)稱加密方式,則服務(wù)器3首先根據(jù)讀取的客戶端2的設(shè)備號(hào),檢測(cè)該設(shè)備號(hào)對(duì)應(yīng)存儲(chǔ)的密鑰對(duì)是否失效,例如可以通過加解密模塊31進(jìn)行該檢測(cè)。當(dāng)服務(wù)器3檢測(cè)到該設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)沒有失效時(shí),根據(jù)獲取的密鑰對(duì)中的私鑰對(duì)HTTP接口 API列表請(qǐng)求的內(nèi)容進(jìn)行解密;而當(dāng)服務(wù)器3檢測(cè)到該設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),服務(wù)器3可以向客戶端2返回密鑰錯(cuò)誤的響應(yīng),以使客戶端2清理其存儲(chǔ)的密鑰對(duì)信息以及API列表信息。
[0101]在步驟S408中,判斷對(duì)HTTP接口 API列表請(qǐng)求中的請(qǐng)求內(nèi)容是否解密成功,如果解密成功則進(jìn)入步驟S410;否則,進(jìn)入步驟S412。
[0102]例如可以由服務(wù)器3的加解密模塊31執(zhí)行上述判斷。
[0103]在步驟S410中,根據(jù)客戶端2的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,獲得其對(duì)應(yīng)的API訪問名;并將由API名字及其訪問名組成的API列表信息返回給客戶端2 ο
[0104]例如,可以由加解密模塊31調(diào)用接口管理模塊32,得到原始API列表,獲取各API的名字后,根據(jù)設(shè)備號(hào),對(duì)各API名字進(jìn)行加密。
[0105]在一些實(shí)施例中,服務(wù)器3根據(jù)客戶端2的設(shè)備號(hào)生成隨機(jī)數(shù)信息,并將該隨機(jī)數(shù)信息以設(shè)備號(hào)為存儲(chǔ)密鑰存儲(chǔ)起來。例如,可以長(zhǎng)期存儲(chǔ),也可以設(shè)置失效時(shí)間,可以在實(shí)際應(yīng)用中根據(jù)實(shí)際需求而設(shè)定,本發(fā)明不以此為限。之后,服務(wù)器3以該隨機(jī)數(shù)信息為密鑰,對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行對(duì)稱加密,獲得其對(duì)應(yīng)的API訪問名。
[0106]在步驟S412中,向客戶端2返回密鑰錯(cuò)誤響應(yīng),以使客戶端2清理其所存儲(chǔ)的API列表信息。
[0107]需要說明的是,如果客戶端2與服務(wù)器3之間的接口數(shù)據(jù)(包括HTTP請(qǐng)求、HTTP接口API列表請(qǐng)求、響應(yīng)結(jié)果等)傳輸采用的是非對(duì)稱加解密,則服務(wù)器3向客戶端2返回密鑰錯(cuò)誤響應(yīng),則還需要使客戶端2清理其所存儲(chǔ)的密鑰對(duì)信息。
[0108]本發(fā)明實(shí)施方式的基于HTTP接口的加解密方法,進(jìn)一步提供了服務(wù)器如何根據(jù)客戶端的請(qǐng)求,生成API列表信息,并將該API列表信息返回給客戶端存儲(chǔ)的方法。
[0109]圖6是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密方法的流程圖,該方法可應(yīng)用于圖1所示的服務(wù)器3中。如圖6所示,該方法50包括:
[0110]在步驟S502中,接收客戶端2發(fā)送的加密公鑰請(qǐng)求,該加密公鑰請(qǐng)求中包含有客戶端2的設(shè)備號(hào)。
[0111]例如,可以由服務(wù)器3的接口處理模塊33執(zhí)行該接收操作。
[0112]在步驟S504中,為客戶端2生成一對(duì)密鑰對(duì)。
[0113]例如,可以由服務(wù)器3的加解密模塊31生成該密鑰對(duì)。
[0114]在一些實(shí)施例中,服務(wù)器3還可以讀取加密公鑰請(qǐng)求中的設(shè)備號(hào),以該設(shè)備號(hào)為密鑰,采用對(duì)稱加密方式對(duì)該公鑰進(jìn)行對(duì)稱加密,生成該公鑰加密后的密文。
[0115]在步驟S506中,以設(shè)備號(hào)為緩存密鑰,存儲(chǔ)該密鑰對(duì),并為其設(shè)置緩存失效時(shí)間。
[0116]在步驟S508中,將該密鑰對(duì)中的公鑰返回給客戶端2。
[0117]在一些實(shí)施例中,如果服務(wù)器3還對(duì)該公鑰進(jìn)行了加密,則將該公鑰的密文返回給客戶端2。
[0118]本發(fā)明實(shí)施方式的基于HTTP接口的加解密方法,進(jìn)一步提供了服務(wù)器如何基于客戶端的加密公鑰請(qǐng)求,為客戶端生成加密密鑰對(duì),并將該密鑰對(duì)返回給客戶端的方法。
[0119]需要說明的是,對(duì)于上述各基于HTTP接口的加解密方法,本發(fā)明不限定其采用的具體加密算法。在實(shí)際應(yīng)用中,可以根據(jù)實(shí)際需求而進(jìn)行設(shè)定,如DES算法等。
[0120]本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施方式的全部或部分步驟被實(shí)現(xiàn)為由CPU執(zhí)行的計(jì)算機(jī)程序。在該計(jì)算機(jī)程序被(PU執(zhí)行時(shí),執(zhí)行本發(fā)明提供的上述方法所限定的上述功能。所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
[0121]此外,需要注意的是,上述附圖僅是根據(jù)本發(fā)明示例性實(shí)施方式的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時(shí)間順序。另外,也易于理解,這些處理可以是例如在多個(gè)模塊中同步或異步執(zhí)行的。
[0122]下述為本發(fā)明裝置實(shí)施例,可以用于執(zhí)行本發(fā)明方法實(shí)施例。對(duì)于本發(fā)明裝置實(shí)施例中未披露的細(xì)節(jié),請(qǐng)參照本發(fā)明方法實(shí)施例。
[0123]圖7是根據(jù)一示例性實(shí)施方式示出的一種基于HTTP接口的加解密裝置的框圖,該裝置可應(yīng)用于圖1所示的客戶端2中。如圖7所示,該裝置60包括:存儲(chǔ)確定模塊602、訪問名獲取模塊604及HTTP請(qǐng)求發(fā)送模塊606。
[0124]存儲(chǔ)確定模塊602用于當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了API列表信息。
[0125]訪問名獲取模塊604用于當(dāng)所述存儲(chǔ)確定模塊602確定存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名。
[0126]HTTP請(qǐng)求發(fā)送模塊606用于向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求。
[0127]其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。
[0128]所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。
[0129]在一些實(shí)施例中,每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)、并以所述隨機(jī)數(shù)作為密鑰對(duì)所述API的名字采用對(duì)稱加密方式進(jìn)行加密后的密文。
[0130]圖8是根據(jù)一示例性實(shí)施方式示出的另一種基于HTTP接口的加解密裝置的框圖,該裝置可應(yīng)用于圖1所示的客戶端2中。與圖7所示的裝置60不同的是,圖8所示的裝置70還包括:API請(qǐng)求發(fā)送模塊702及API列表接收模塊704。
[0131]API請(qǐng)求發(fā)送模塊702用于當(dāng)所述存儲(chǔ)確定模塊602確定沒有存儲(chǔ)所述API列表信息時(shí),向所述服務(wù)器發(fā)送HTTP接口 API列表請(qǐng)求。
[0132]其中,所述HTTP接口API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。
[0133]API列表接收模塊704用于接收并存儲(chǔ)所述服務(wù)器返回的所述API列表信息。
[0134]在一些實(shí)施例中,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文。裝置70還包括:公鑰請(qǐng)求發(fā)送模塊(圖中未示出)及公鑰接收模塊(圖中未示出)。其中,公鑰請(qǐng)求發(fā)送模塊用于當(dāng)確定沒有存儲(chǔ)在所述非對(duì)稱加密方式中使用的加密公鑰時(shí),向所述服務(wù)器發(fā)送加密公鑰請(qǐng)求。公鑰接收模塊用于接收并存儲(chǔ)從所述服務(wù)器接收的所述加密公鑰。
[0135]在一些實(shí)施例中,所述加密公鑰為采用對(duì)稱加密方式加密后的密文,且在所述對(duì)稱加密方式中使用的密鑰為所述客戶端的設(shè)備號(hào)。
[0136]圖9是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖,該裝置可應(yīng)用于圖1所示的服務(wù)器3中。如圖9所示,該裝置80包括:HTTP請(qǐng)求接收模塊802、第一設(shè)備號(hào)獲取模塊804、第一請(qǐng)求解密模塊806、訪問名解密模塊808以及HTTP請(qǐng)求處理模塊 810。
[0137]HTTP請(qǐng)求接收模塊802用于接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文。
[0138]第一設(shè)備號(hào)獲取模塊804用于從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào).
[0139]第一請(qǐng)求解密模塊806用于對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功。
[0140]訪問名解密模塊808用于當(dāng)所述第一請(qǐng)求解密模塊806確定對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功。
[0141]HTTP請(qǐng)求處理模塊810用于當(dāng)所述訪問名解密模塊808確定對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。
[0142]在一些實(shí)施例中,所述第一請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文。該裝置80還包括:密鑰錯(cuò)誤響應(yīng)模塊(圖中未示出),用于當(dāng)確定用于所述非對(duì)稱加密方式的所述客戶端的設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),或者當(dāng)所述第一請(qǐng)求解密模塊806確定對(duì)所述第一請(qǐng)求內(nèi)容解密失敗時(shí),或者當(dāng)所述訪問名解密模塊808確定對(duì)所述待訪問API的API訪問名解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。
[0143]圖10是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖,該裝置可應(yīng)用于圖1所示的服務(wù)器3中。與圖9所示的裝置80不同的是,圖10所示的裝置90還包括:API請(qǐng)求接收模塊902、第二設(shè)備號(hào)讀取模塊904、第二請(qǐng)求解密模塊906、API列表生成模塊908及API列表發(fā)送模塊910。
[0144]API請(qǐng)求接收模塊902用于接收所述客戶端發(fā)送的HTTP接口 API列表請(qǐng)求,其中所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;
[0145]第二設(shè)備號(hào)讀取模塊904用于從所述HTTP接口API列表請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);
[0146]第二請(qǐng)求解密模塊906用于對(duì)所述第二請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第二請(qǐng)求內(nèi)容是否解密成功;
[0147]API列表生成模塊908用于當(dāng)所述第二請(qǐng)求解密模塊906確定對(duì)所述第二請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名;以及
[0148]API列表發(fā)送模塊910用于將由每個(gè)API的名字及其對(duì)應(yīng)的所述API訪問名組成的API列表信息返回給所述客戶端。
[0149]在一些實(shí)施例中,API列表發(fā)送模塊910包括:隨機(jī)數(shù)生成子模塊9102、API加密子模塊9104及隨機(jī)數(shù)存儲(chǔ)子模塊9106。隨機(jī)數(shù)生成子模塊9102用于根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)。API加密子模塊9104用于以所述隨機(jī)數(shù)為密鑰,對(duì)所述API列表中的每個(gè)API的名字以對(duì)稱加密方式進(jìn)行加密,以分別獲得其對(duì)應(yīng)的所述API訪問名。隨機(jī)數(shù)存儲(chǔ)子模塊9106用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述隨機(jī)數(shù)。
[0150]在一些實(shí)施例中,所述第二請(qǐng)求內(nèi)容也為采用非對(duì)稱加密方式加密后的密文。該裝置90也還包括:密鑰錯(cuò)誤響應(yīng)模塊(圖中未示出)。密鑰錯(cuò)誤響應(yīng)模塊還用于當(dāng)?shù)诙?qǐng)求解密模塊906確定對(duì)所述第二請(qǐng)求內(nèi)容解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。
[0151]圖11是根據(jù)一示例性實(shí)施方式示出的再一種基于HTTP接口的加解密裝置的框圖,該裝置可應(yīng)用于圖1所示的服務(wù)器3中。與圖9所示的裝置80不同的是,圖11所示的裝置100還包括:公鑰請(qǐng)求接收模塊1002、密鑰對(duì)生成模塊1004、密鑰對(duì)存儲(chǔ)模塊1006及公鑰發(fā)送模塊 1008 ο
[0152]公鑰請(qǐng)求接收模塊1002用于接收所述客戶端發(fā)送的加密公鑰請(qǐng)求,所述加密公鑰請(qǐng)求包含所述客戶端的設(shè)備號(hào)。
[0153]密鑰對(duì)生成模塊1004用于為所述客戶端生成一對(duì)密鑰對(duì)。
[0154]密鑰對(duì)存儲(chǔ)模塊1006用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述密鑰對(duì),并設(shè)置存儲(chǔ)失效時(shí)間。
[0155]公鑰發(fā)送模塊1008用于將所述密鑰對(duì)中的公鑰返回給所述客戶端。
[0156]在一些實(shí)施例中,還包括:公鑰加密模塊1010,用于以所述客戶端的設(shè)備號(hào)為密鑰,對(duì)所述密鑰對(duì)中的公鑰采用對(duì)稱加密方式進(jìn)行加密;所述公鑰發(fā)送模塊1008還用于將加密后的所述密鑰對(duì)中的公鑰返回給所述客戶端。
[0157]需要注意的是,上述附圖中所示的框圖是功能實(shí)體,不一定必須與物理或邏輯上獨(dú)立的實(shí)體相對(duì)應(yīng)??梢圆捎密浖问絹韺?shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
[0158]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施方式可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本發(fā)明實(shí)施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-ROM,U盤,移動(dòng)硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、移動(dòng)終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本發(fā)明實(shí)施方式的方法。
[0159]以上具體地示出和描述了本發(fā)明的示例性實(shí)施方式。應(yīng)可理解的是,本發(fā)明不限于這里描述的詳細(xì)結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。
【主權(quán)項(xiàng)】
1.一種基于HTTP接口的加解密方法,適用于客戶端,其特征在于,包括: 當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了 API列表信息; 當(dāng)存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及 向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求; 其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文; 所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)沒有存儲(chǔ)所述API列表信息時(shí),向所述服務(wù)器發(fā)送HTTP接口API列表請(qǐng)求;以及 接收并存儲(chǔ)所述服務(wù)器返回的所述API列表信息; 其中,所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)、并以所述隨機(jī)數(shù)作為密鑰對(duì)所述API的名字采用對(duì)稱加密方式進(jìn)行加密后的密文。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述方法還包括: 當(dāng)確定沒有存儲(chǔ)在所述非對(duì)稱加密方式中使用的加密公鑰時(shí),向所述服務(wù)器發(fā)送加密公鑰請(qǐng)求;以及 接收并存儲(chǔ)從所述服務(wù)器接收的所述加密公鑰; 其中,所述加密公鑰為采用對(duì)稱加密方式加密后的密文,且在所述對(duì)稱加密方式中使用的密鑰為所述客戶端的設(shè)備號(hào)。5.一種基于HTTP接口的加解密方法,適用于服務(wù)器,其特征在于,包括: 接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文; 從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào); 對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功; 當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及 當(dāng)對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 接收所述客戶端發(fā)送的HTTP接口 API列表請(qǐng)求,其中所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文; 從所述HTTP接口 API列表請(qǐng)求中獲取所述客戶端的設(shè)備號(hào); 對(duì)所述第二請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第二請(qǐng)求內(nèi)容是否解密成功; 當(dāng)對(duì)所述第二請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名;以及 將由每個(gè)API的名字及其對(duì)應(yīng)的所述API訪問名組成的API列表信息返回給所述客戶端。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名包括: 根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù); 以所述隨機(jī)數(shù)為密鑰,對(duì)所述API列表中的每個(gè)API的名字以對(duì)稱加密方式進(jìn)行加密,以分別獲得其對(duì)應(yīng)的所述API訪問名;以及 以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述隨機(jī)數(shù)。8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述方法還包括: 當(dāng)確定用于所述非對(duì)稱加密方式的所述客戶端的設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),或者當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密失敗時(shí),或者當(dāng)對(duì)所述待訪問API的API訪問名解密失敗時(shí),或者當(dāng)對(duì)所述第二請(qǐng)求內(nèi)容解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。9.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 接收所述客戶端發(fā)送的加密公鑰請(qǐng)求,所述加密公鑰請(qǐng)求包含所述客戶端的設(shè)備號(hào); 為所述客戶端生成一對(duì)密鑰對(duì); 以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述密鑰對(duì),并設(shè)置存儲(chǔ)失效時(shí)間; 以所述客戶端的設(shè)備號(hào)為密鑰,對(duì)所述密鑰對(duì)中的公鑰采用對(duì)稱加密方式進(jìn)行加密;以及 將加密后的所述密鑰對(duì)中的公鑰返回給所述客戶端。10.一種基于HTTP接口的加解密裝置,適用于客戶端,其特征在于,包括: 存儲(chǔ)確定模塊,用于當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了 API列表信息; 訪問名獲取模塊,用于當(dāng)所述存儲(chǔ)確定模塊確定存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及HTTP請(qǐng)求發(fā)送模塊,用于向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求; 其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文; 所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括: API請(qǐng)求發(fā)送模塊,用于當(dāng)所述存儲(chǔ)確定模塊確定沒有存儲(chǔ)所述API列表信息時(shí),向所述服務(wù)器發(fā)送HTTP接口 API列表請(qǐng)求;以及 API列表接收模塊,用于接收并存儲(chǔ)所述服務(wù)器返回的所述API列表信息; 其中,所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文。12.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù)、并以所述隨機(jī)數(shù)作為密鑰對(duì)所述API的名字采用對(duì)稱加密方式進(jìn)行加密后的密文。13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述裝置還包括: 公鑰請(qǐng)求發(fā)送模塊,用于當(dāng)確定沒有存儲(chǔ)在所述非對(duì)稱加密方式中使用的加密公鑰時(shí),向所述服務(wù)器發(fā)送加密公鑰請(qǐng)求;以及 公鑰接收模塊,用于接收并存儲(chǔ)從所述服務(wù)器接收的所述加密公鑰; 其中,所述加密公鑰為采用對(duì)稱加密方式加密后的密文,且在所述對(duì)稱加密方式中使用的密鑰為所述客戶端的設(shè)備號(hào)。14.一種基于HTTP接口的加解密裝置,適用于服務(wù)器,其特征在于,包括: HTTP請(qǐng)求接收模塊,用于接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文; 第一設(shè)備號(hào)獲取模塊,用于從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào); 第一請(qǐng)求解密模塊,用于對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功; 訪問名解密模塊,用于當(dāng)所述第一請(qǐng)求解密模塊確定對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及 HTTP請(qǐng)求處理模塊,用于當(dāng)所述訪問名解密模塊確定對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,還包括: API請(qǐng)求接收模塊,用于接收所述客戶端發(fā)送的HTTP接口 API列表請(qǐng)求,其中所述HTTP接口 API列表請(qǐng)求包括:第二請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第二請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文; 第二設(shè)備號(hào)讀取模塊,用于從所述HTTP接口 API列表請(qǐng)求中獲取所述客戶端的設(shè)備號(hào);第二請(qǐng)求解密模塊,用于對(duì)所述第二請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第二請(qǐng)求內(nèi)容是否解密成功; API列表生成模塊,用于當(dāng)所述第二請(qǐng)求解密模塊確定對(duì)所述第二請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)所述客戶端的設(shè)備號(hào),對(duì)存儲(chǔ)的API列表中的每個(gè)API的名字進(jìn)行加密,分別獲得其對(duì)應(yīng)的API訪問名;以及 API列表發(fā)送模塊,用于將由每個(gè)API的名字及其對(duì)應(yīng)的所述API訪問名組成的API列表信息返回給所述客戶端。16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述API列表生成模塊包括: 隨機(jī)數(shù)生成子模塊,用于根據(jù)所述客戶端的設(shè)備號(hào)生成隨機(jī)數(shù); API加密子模塊,用于以所述隨機(jī)數(shù)為密鑰,對(duì)所述API列表中的每個(gè)API的名字以對(duì)稱加密方式進(jìn)行加密,以分別獲得其對(duì)應(yīng)的所述API訪問名;以及 隨機(jī)數(shù)存儲(chǔ)子模塊,用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述隨機(jī)數(shù)。17.根據(jù)權(quán)利要求15或16所述的裝置,其特征在于,所述第一請(qǐng)求內(nèi)容和所述第二請(qǐng)求內(nèi)容為采用非對(duì)稱加密方式加密后的密文;所述裝置還包括: 密鑰錯(cuò)誤響應(yīng)模塊,用于當(dāng)確定用于所述非對(duì)稱加密方式的所述客戶端的設(shè)備號(hào)對(duì)應(yīng)的密鑰對(duì)失效時(shí),或者當(dāng)所述第一請(qǐng)求解密模塊確定對(duì)所述第一請(qǐng)求內(nèi)容解密失敗時(shí),或者當(dāng)所述訪問名解密模塊確定對(duì)所述待訪問API的API訪問名解密失敗時(shí),或者當(dāng)?shù)诙?qǐng)求解密模塊確定對(duì)所述第二請(qǐng)求內(nèi)容解密失敗時(shí),向所述客戶端返回密鑰錯(cuò)誤響應(yīng),以使所述客戶端清理存儲(chǔ)的所述API列表信息及所述密鑰對(duì)中的公鑰。18.根據(jù)權(quán)利要求14所述的裝置,其特征在于,還包括: 公鑰請(qǐng)求接收模塊,用于接收所述客戶端發(fā)送的加密公鑰請(qǐng)求,所述加密公鑰請(qǐng)求包含所述客戶端的設(shè)備號(hào); 密鑰對(duì)生成模塊,用于為所述客戶端生成一對(duì)密鑰對(duì); 密鑰對(duì)存儲(chǔ)模塊,用于以所述客戶端的設(shè)備號(hào)為緩存密鑰,存儲(chǔ)所述密鑰對(duì),并設(shè)置存儲(chǔ)失效時(shí)間; 公鑰加密模塊,用于以所述客戶端的設(shè)備號(hào)為密鑰,對(duì)所述密鑰對(duì)中的公鑰采用對(duì)稱加密方式進(jìn)行加密;以及 公鑰發(fā)送模塊,用于將加密后的所述密鑰對(duì)中的公鑰返回給所述客戶端。19.一種基于HTTP接口的加解密系統(tǒng),適用于客戶端,其特征在于,包括: 處理器;以及 存儲(chǔ)器,用于存儲(chǔ)所述處理器的可執(zhí)行指令; 其中所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行以下操作: 當(dāng)需要向服務(wù)器獲取數(shù)據(jù)時(shí),確定是否存儲(chǔ)了 API列表信息; 當(dāng)存儲(chǔ)有所述API列表信息時(shí),從所述API列表信息中獲取待訪問API的API訪問名;以及 向所述服務(wù)器發(fā)送用于獲取數(shù)據(jù)的HTTP請(qǐng)求; 其中,所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文; 所述API列表信息包括至少一個(gè)API的名字及對(duì)應(yīng)的API訪問名;每個(gè)API的所述API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述API的名字進(jìn)行加密后的密文。20.一種基于HTTP接口的加解密系統(tǒng),適用于服務(wù)器,其特征在于,包括: 處理器;以及 存儲(chǔ)器,用于存儲(chǔ)所述處理器的可執(zhí)行指令; 其中所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行以下操作: 接收客戶端發(fā)送的HTTP請(qǐng)求,其中所述HTTP請(qǐng)求包括:含有所述待訪問API的API訪問名的第一請(qǐng)求內(nèi)容及所述客戶端的設(shè)備號(hào);所述第一請(qǐng)求內(nèi)容為加密后的密文,所述客戶端的設(shè)備號(hào)為明文;所述待訪問API的API訪問名為根據(jù)所述客戶端的設(shè)備號(hào)對(duì)所述待訪問API的名字進(jìn)行加密后的密文; 從所述HTTP請(qǐng)求中獲取所述客戶端的設(shè)備號(hào); 對(duì)所述第一請(qǐng)求內(nèi)容進(jìn)行解密,并確定對(duì)所述第一請(qǐng)求內(nèi)容是否解密成功; 當(dāng)對(duì)所述第一請(qǐng)求內(nèi)容解密成功時(shí),根據(jù)獲取的所述客戶端的設(shè)備號(hào),對(duì)所述待訪問API的API訪問名進(jìn)行解密,并確定對(duì)所述待訪問API的API訪問名是否解密成功;以及 當(dāng)對(duì)所述待訪問API的API訪問名解密成功時(shí),根據(jù)解密后得到的所述待訪問API的名字,獲取所述待訪問API的地址;根據(jù)所述待訪問API的地址,獲得所述HTTP請(qǐng)求的響應(yīng)結(jié)果;并將所述響應(yīng)結(jié)果返回給所述客戶端。
【文檔編號(hào)】H04L9/08GK106060037SQ201610366145
【公開日】2016年10月26日
【申請(qǐng)日】2016年5月27日
【發(fā)明人】莫文, 熊健南, 畢磊
【申請(qǐng)人】北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司