999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WebService的加密算法

2019-09-10 06:22:15徐彤
現(xiàn)代信息科技 2019年2期

摘 要:由于當(dāng)今Web服務(wù)存在多種數(shù)據(jù)傳輸格式,不同的數(shù)據(jù)格式所需存儲方法的實(shí)現(xiàn)代碼存在差異,因此迫切地希望提高代碼的彈性,以適應(yīng)未來的各種數(shù)據(jù)格式。本文簡單介紹了Web服務(wù),RESTful和參數(shù)傳遞,進(jìn)一步提高了代碼的彈性,并以“秘密情書”為例著重介紹了兩種加密算法,利用其對明文進(jìn)行加密,降低泄露的可能性,保證信息的安全和可靠。

關(guān)鍵詞:Web Service;RESTful;加密算法;參數(shù)傳遞

中圖分類號:TP393.09 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2019)02-0100-03

Abstract:Based on the existence of multiple data transmission formats in today’s Web services,different data formats require differences in the implementation code of storage methods. Therefore,it is urgent to improve the flexibility of the code to adapt to various data formats in the future. This article briefly introduces Web services,RESTful and parameter transfer,further improving the flexibility of the code,and introduces two encryption algorithms with a case column “secret love letter” to use it to encrypt plaintext and reduce the possibility of leakage. Ensure the safety and reliability of information.

Keywords:Web Service;RESTful;encryption algorithm;parameter transfer

0 引 言

隨著互聯(lián)網(wǎng)時(shí)代的發(fā)展,不同信息系統(tǒng)之間交互的數(shù)據(jù)格式存在差異,如果每次修改存儲方法的實(shí)現(xiàn)代碼,就使得代碼的彈性不夠,無法很好適應(yīng)未來的Content-type,Mine-type和Media-type等各種類型格式,因此一種更有彈性的同樣可以實(shí)現(xiàn)該需求的代碼編寫被提了出來,這也是利用Web Service的方便之處。除此之外,在互聯(lián)網(wǎng)上傳遞信息有時(shí)候是很不安全的,一旦我們的信息被不法人員截獲,其便可以輕松了解信息的內(nèi)容,所以,在此提出了兩種加密算法在傳輸過程中對信息進(jìn)行加密,接收方對信息進(jìn)行解密后,便可以獲得信息的準(zhǔn)確內(nèi)容。

1 Web服務(wù)的概念

在談到Web服務(wù)前,我先對服務(wù)進(jìn)行簡單介紹。計(jì)算機(jī)中的服務(wù)是指某個(gè)具體功能。提供計(jì)算1+1=2的功能是一種服務(wù);提供翻譯功能是一種服務(wù);根據(jù)你輸入的圓的半徑幫你畫一個(gè)圓也是一種服務(wù);更不用說常使用到的外賣服務(wù)、地圖服務(wù)和交通服務(wù)等等。那么什么是Web服務(wù)呢?Web服務(wù)就是指使用http或https協(xié)議接受用戶的請求并提供功能服務(wù)的方式。平時(shí)中一個(gè)常見的Web服務(wù)例子,用戶在谷歌瀏覽器的地址欄中輸入http://www.baidu.com之后(按Enter鍵),瀏覽器顯示“百度搜索”這個(gè)搜索引擎。為什么我會將其理解為Web服務(wù)呢?因?yàn)槭紫冗@個(gè)服務(wù)是基于http協(xié)議的,然后,在從地址欄輸入U(xiǎn)RI到顯示“百度搜索”這整個(gè)過程是輸入U(xiǎn)RI之后(按Enter鍵),瀏覽器客戶端將http://www.baidu.com請求發(fā)送到服務(wù)器,請求服務(wù)器響應(yīng),服務(wù)器對這個(gè)請求進(jìn)行解析,發(fā)現(xiàn)存在一個(gè)服務(wù)可以滿足這個(gè)請求,之后便將其對應(yīng)的html文件發(fā)送到客戶端顯示出來。

2 RESTful的概念

REST的全稱是Representational State Transfer,直譯為表述性狀態(tài)轉(zhuǎn)移。REST在2000年被Roy Fielding提出,是一種利用萬維網(wǎng)的相關(guān)技術(shù)以及協(xié)議來構(gòu)建大規(guī)模網(wǎng)絡(luò)軟件的構(gòu)架方式。REST意在說明,數(shù)據(jù)資源是可以被定義,被發(fā)布的,并且在此基礎(chǔ)上將信息的交換變得簡單并具有可擴(kuò)展性。RESTful=REST+ful,既具有REST特征的設(shè)計(jì)風(fēng)格。

3 API簡單參數(shù)傳遞

這里提到的簡單參數(shù)是指非結(jié)構(gòu)化的參數(shù),如一個(gè)數(shù)值、一個(gè)字符串這樣的用簡單變量進(jìn)行接受處理的參數(shù)。

簡單參數(shù)傳遞可以選擇兩種方式傳遞:(1)附加在路徑上,表觀現(xiàn)象如真實(shí)的資源路徑無差異。(2)附加在資源路徑的之后,按照標(biāo)準(zhǔn)的值對鏈條進(jìn)行傳參。前者稱為@PathParam注解傳參,后者稱之為@QueryParam注解傳參。

3.1 @PathParam注解

路徑傳參,就參數(shù)傳遞的形式而言是將參數(shù)嵌入到路徑中,并從表觀形態(tài)上與資源實(shí)體所對應(yīng)的路徑具有不可區(qū)分性。@PathParam語法形式:@PathParam(“路徑中的參數(shù)名”)parameterType parameterName。在@PathParam中配置參數(shù)模板:@Path(“/path1/.../pathk/.../pathn”),示例:@Path(“/path/{name}/a/{age}/{gender}/myfile”)。在Class方法的參數(shù)列表中為相關(guān)參數(shù)配置@PathParam標(biāo)注,進(jìn)行參數(shù)賦值,示例:public String testPath(@Path Param(“age”) int age,@PathParam(“name”) String name,@PathParam(“gender”) String gender)。

@Path與@PathParam注解聯(lián)合工作原理:當(dāng)用戶請求路徑http://127.0.0.1/restful/test/path/張三/a/23/男/myfile時(shí),請求路徑與容器內(nèi)注冊模板進(jìn)行匹配,發(fā)現(xiàn)@PathParam(“/path/{name}/a/{age}/{gender}/myfile”)匹配成功,接著進(jìn)行路徑參數(shù)解析,將name賦值為張三,age賦值為23,gender賦值為男,方法體代碼正確執(zhí)行后通過@Produces標(biāo)注返回給用戶的結(jié)果。

3.2 @QueryParam注解

Query是指URL中由“問號”引導(dǎo)出的值對參數(shù)鏈條。Query傳參形式:http://host:port/path?Param1=value1&...&paramn=valuen。

@QueryParam語法形式:@QueryParam(“路徑中的參數(shù)名”) parameterType parameterName。在Class方法的參數(shù)列表中為相關(guān)參數(shù)配置@QueryParam標(biāo)注,進(jìn)行參數(shù)賦值,示例:public String testQuery(@QueryParam (“age”) int age,@QueryParam(“name”) String name,@QueryParam(“gender”) String gender)。

@QueryParam注解工作原理:當(dāng)用戶請求路徑http: //127.0.0.1/restful/test/query?name=張三&age=23& gender=男,請求路徑與容器內(nèi)注冊模板進(jìn)行匹配,發(fā)現(xiàn)public String testQuery(@QueryParam(“age”) int age,@QueryParam(“name”) String name,@QueryParam (“gender”) String gender)匹配成功,接著進(jìn)行路徑參數(shù)解析,將name賦值為張三,age賦值為23,gender賦值為男,方法體代碼正確執(zhí)行后通過@Produces標(biāo)注返回給用戶的結(jié)果。

4 Form表單參數(shù)傳遞

Form表單是一個(gè)容器,可將容器內(nèi)的對象集合組織成參數(shù)集合,并向服務(wù)器發(fā)送這些參數(shù)。該容器內(nèi)的常見可用于參數(shù)傳遞的對象如:input,select,textarea等。@Form語法:@Form parameterType parameterName。在Class方法中用法,示例:public String testForm(@Form FormRequestValues form)。與@Form匹配的parameterType類:需要在類的每個(gè)屬性前加一個(gè)@FormParam注解,注解中填入表單中控件的name屬性值。

5 加密算法

在這個(gè)過程中,我簡單介紹一個(gè)信息交互過程“秘密的情書”,如圖1所示。

5.1 算法A

Cipher1結(jié)構(gòu):C1,R1,C2,R2,…,Cn,Rn。Cipher1實(shí)例:72,01,75,02,74,03,73,04,其中Ci和Ri為ASCII的16進(jìn)制形式,各自表示一個(gè)字節(jié)從Cipher1中獲取key的各組成字節(jié):keyBytes[i]=(Ci xor Ri);從Cipher1中獲取key的示例:keyBytes[0]=(72 xor 01);keyBytes[1]=

(75 xor 02);keyBytes[2]=(74 xor 03);keyBytes[3] =(73 xor 04);key=new String(keyBytes),下面給出實(shí)現(xiàn)代碼。

public static String getCipherKey(@Form Step1 step1) {

String secret=step1.getSecret().trim();

byte[] keyBytes=new byte[secret.length() / 4];

int k=0;

for (int i = 0; i < secret.length(); i += 4) {

String temp1 = secret.substring(i, i + 2);

byte ci = (byte) Integer.parseInt(temp1, 16);

String temp2 = secret.substring(i + 2, i + 4);

byte ri = (byte) Integer.parseInt(temp2, 16);

keyBytes[k++] = (byte) (ci ^ ri);

}

String key = new String(keyBytes);

return key;

}

5.2 算法B

明文結(jié)構(gòu):T1,T2,T3,T4,…,Tn-1,Tn,密鑰結(jié)構(gòu):K1,K2,K3,K4,K5,K6,K7,將key視為明文,將自己的學(xué)號視為密鑰,調(diào)用算法B,混合生成newKey:newKey[i]=(Ti xor Ki);注意:當(dāng)Km從為密鑰最后一個(gè)字節(jié)時(shí),Km+1=K0,Km+2=K1,即密鑰將重新從自己的首字節(jié)開始與明文按字節(jié)進(jìn)行xor運(yùn)算,直至計(jì)算完明文的最后一個(gè)字節(jié)為止。張華在得到newKey后,再次使用算法B加密自己的短消息,此時(shí)需要加密的短消息為明文,newKey為密鑰,算法不變。注意在這個(gè)算法中,還將引入隨機(jī)數(shù)。利用Java中的getBytes[]方法獲取學(xué)號和明文的byte數(shù)組,接著生成隨機(jī)數(shù),將學(xué)號和明文的數(shù)組元素和隨機(jī)數(shù)進(jìn)行異或,將異或的結(jié)果和隨機(jī)數(shù)作為最后newKey的結(jié)果。

public static String createCipherKey(@Form Step2 step2) {

String mingwen = step2.getMingwen().trim();

String number = step2.getNumber().trim();

byte[] mw = mingwen.getBytes();

byte[] xuehao = number.getBytes();

String str = "";

for (int i = 0; i < mw.length; i++) {

byte temp1 = mw[i];

byte temp2 = xuehao[i % xuehao.length];

int ran = (int) (Math.random() * 256);

int temp = temp1 ^ temp2 ^ ran;

String ranHexString = Integer.toHexString(ran);

if (ranHexString.length() < 2)

ranHexString = "0" + ranHexString;

String tempHexString = Integer.toHexString (temp);

if (tempHexString.length() < 2)

tempHexString = "0" + tempHexString;

str = str + ranHexString + tempHexString;

}

return str;

}

6 結(jié) 論

計(jì)算機(jī)網(wǎng)絡(luò)和Web技術(shù)的高速發(fā)展,為人們提供了便利,但隨之而來的是信息的安全問題,為此有必要以一種高效的算法對信息進(jìn)行加密,防止不法分子對信息進(jìn)行解密或讓其付出慘重代價(jià),以此保證信息的安全性。在此,僅僅提出一個(gè)簡單的加密模型,在后期隨著知識的積累將對其進(jìn)一步改進(jìn)。

參考文獻(xiàn):

[1] 韓陸.Java RESTful Web Service實(shí)戰(zhàn)(第二版) [D].北京:機(jī)械工業(yè)出版社,2018.

[2] 潘運(yùn)平,王勝男,王曉川.基于WebService的整車物流管理信息系統(tǒng)研究 [J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2013,35(5):710-713.

作者簡介:徐彤(1998.12-),男,江西鷹潭人,本科,主要研究方向:軟件工程理論與方法。

主站蜘蛛池模板: a级毛片免费在线观看| 国产特一级毛片| 欧美a在线| 欧美精品一区在线看| 亚洲欧美日韩成人在线| 日韩 欧美 小说 综合网 另类| 国产永久在线视频| 亚洲一级毛片| 欧美特黄一级大黄录像| 波多野结衣国产精品| 最新亚洲av女人的天堂| 亚洲色图欧美激情| Jizz国产色系免费| 91无码国产视频| 亚洲无限乱码一二三四区| 久久综合丝袜长腿丝袜| 国产视频资源在线观看| 日韩一级二级三级| 免费黄色国产视频| 青青草国产一区二区三区| 综合色88| 亚洲综合极品香蕉久久网| 国语少妇高潮| 国产欧美日韩一区二区视频在线| 伊人91在线| 国产高清又黄又嫩的免费视频网站| 欧美色伊人| 国产精品一区二区国产主播| 亚洲激情区| 国产欧美在线视频免费| 另类专区亚洲| 国产自视频| 一级爱做片免费观看久久| 色天天综合久久久久综合片| 伊人色天堂| 黄色网页在线观看| 青草91视频免费观看| 乱系列中文字幕在线视频| 国产精品无码AV中文| 色亚洲成人| 无码高潮喷水专区久久| 内射人妻无套中出无码| 欧美日韩激情在线| 亚洲欧洲日韩综合色天使| 国产麻豆另类AV| 久久国产乱子| 欧美日韩精品在线播放| 亚洲永久免费网站| 亚洲黄色成人| 国产96在线 | 亚洲福利视频一区二区| 无码乱人伦一区二区亚洲一| 亚洲人成色在线观看| 香蕉蕉亚亚洲aav综合| 成人国产小视频| 国产系列在线| 日韩欧美国产三级| 欧美有码在线| 天堂成人av| 这里只有精品国产| 人妻21p大胆| 国产aaaaa一级毛片| 精品三级在线| 婷婷午夜影院| 精品国产乱码久久久久久一区二区| 日韩国产精品无码一区二区三区| 小蝌蚪亚洲精品国产| 久久精品国产国语对白| 亚洲第一精品福利| 99精品欧美一区| 欧美中文字幕在线视频| 欧美激情第一区| 美臀人妻中出中文字幕在线| 丝袜国产一区| 九九久久精品免费观看| 久久久噜噜噜久久中文字幕色伊伊 | 日本尹人综合香蕉在线观看| 午夜欧美在线| 久久99国产乱子伦精品免| 亚洲天堂首页| 免费视频在线2021入口| 色网站在线视频|