• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于DES加密算法的Adnroid平臺與服務器通信加密的實現(xiàn)

      2015-06-28 16:53:29孫語澤
      東北師大學報(自然科學版) 2015年3期
      關(guān)鍵詞:加密算法服務器端解密

      孫語澤,遲 嘉,胡 亮

      (吉林大學計算機科學與技術(shù)學院,吉林長春130012)

      一種基于DES加密算法的Adnroid平臺與服務器通信加密的實現(xiàn)

      孫語澤,遲 嘉,胡 亮

      (吉林大學計算機科學與技術(shù)學院,吉林長春130012)

      通過對DES加密算法進行改進,在Android平臺下設置DES加密算法相應的工作模式、填充模式以及初始化向量,并在服務器端進行同樣的設置,保證加密結(jié)果和解密結(jié)果的一致性.實現(xiàn)了Android客戶端與服務器端通信信息的加密,在很大程度上保證了信息的安全性和可靠性,這為Android系統(tǒng)下的數(shù)據(jù)信息加密提供一個可行的方案.

      DES加密算法;通信加密;隨機密鑰

      在信息量猛增的今天,智能手機在日常生活中扮演著十分重要的角色,Android操作系統(tǒng)作為智能手機主流的操作系統(tǒng)(市場占有率約為78.9%)憑借全新的用戶體驗被越來越多的用戶接受,因此Android系統(tǒng)下的手機客戶端如雨后春筍般出現(xiàn)在用戶的智能手機中.在這樣一個背景下,無論是用戶的個人信息還是用戶與他人進行交流的信息都呈爆炸式增長,一旦通信的信息遭到竊取和泄露,對于用戶和企業(yè)都是無法容忍的,如何確保用戶的通信安全成為十分嚴峻的問題[1].

      本文通過對傳統(tǒng)DES加密算法[2]進行改進,在通信雙方約定一個初始化向量,這樣加/解密的過程不再單純地依賴密鑰,并保證了客戶端與服務器對數(shù)據(jù)加密結(jié)果的一致性.通過隨機算法在每次通信過程中都生成一個全新的密鑰,進一步加強安全[3].經(jīng)實驗證明,改進后的加密方案在安全性上較傳統(tǒng)算法有很大的進步.

      1 預備知識

      信息加密是以密碼學為基礎的.密碼學是研究如何把信息轉(zhuǎn)換成一種隱蔽的方式并阻止其他人得到[4].現(xiàn)代密碼學中,假設密鑰用K表示,K可以是很多數(shù)值里的任意值,密鑰K的可能值的范圍叫做密鑰空間.加密和解密運算都使用這個密鑰(即運算都依賴于密鑰,并用K作為下標表示),這樣,加/解密函數(shù)變成:

      上述函數(shù)具有這樣的特性方程

      有些算法使用不同的加密密鑰和解密密鑰(見圖1),也就是說加密密鑰K1與相應的解密密鑰K2不同,在這種情況下有:

      圖1 使用2個密鑰的加/解密框圖

      密碼系統(tǒng)由算法、所有可能的明文、密文和密鑰組成.根據(jù)密鑰類型不同將現(xiàn)代密碼技術(shù)分為兩類:一類是對稱加密(私鑰加密)系統(tǒng);另一類是非對稱加密(公開密鑰加密)系統(tǒng).

      傳統(tǒng)的DES加密算法是一種對稱加密算法.在大多數(shù)對稱加密算法中,加密和解密密鑰是相同的[5],這些算法也叫秘密密鑰算法或單密鑰算法.在實際應用中要求發(fā)送者和接收者在通信之前,約定一個密鑰.對稱加密算法的安全性主要依賴于密鑰,泄漏密鑰就意味著任何人都能對消息進行加密和解密,通信的保密是建立在密鑰保密的基礎上.

      2 加密方案的設計與實現(xiàn)

      2.1 DES算法簡介

      DES采用56位密鑰處理64位明文數(shù)據(jù),它的算法是公開的,算法的保密性取決于對密鑰的保密,是一種對稱的分組密碼.在加密前,先對整個明文數(shù)據(jù)進行分組[6],然后對分組后的數(shù)據(jù)分別進行加密處理,產(chǎn)生相對應的密文數(shù)據(jù),最后將各組密文數(shù)據(jù)串接起來,得出整個密文,加密過程完成.解密過程是加密過程的逆過程,即密鑰的使用次序相反.

      密鑰的長度為56位(密鑰通常表示為64位的數(shù),但每個第8位都用做奇偶檢驗,可以忽略).密鑰可以是任意的56位數(shù),且可以在任意時間改變.

      DES算法的輸入?yún)?shù)主要有Key,Data,Mode.其中:Key表示8個字節(jié)共64位的工作密鑰;Data表示8個字節(jié)64位的要被加密或解密的數(shù)據(jù);Mode表示DES的基本工作方式,有加密或解密2種.

      DES的工作過程描述:若Mode為加密模式,則用Key對數(shù)據(jù)Data進行加密,生成Data的密文形式(64位)作為DES的輸出結(jié)果;若Mode為解密模式,則用Key對密文形式的數(shù)據(jù)Data解密,還原為Data的明文形式(64位)作為DES的輸出結(jié)果[7].

      簡單地說,加密算法只不過是一種基本技術(shù)(見圖2),DES基本組建分組是這些技術(shù)的一種組合,它基于密鑰作用于明文,這是眾所周知的輪(Round)[8].DES有16輪,這意味著要在明文分組上有16次實施相同的組合技術(shù).

      圖2 DES加密算法的一般過程

      2.2 對DES加密算法的改進實現(xiàn)

      本文對傳統(tǒng)的DES加密方法進行改進,引入一個初始化向量,使得整個加密和解密過程不僅僅依賴密鑰,還需要初始化向量的共同參與.該初始化向量是一個長度為8的字節(jié)數(shù)組,Android客戶端和服務器端可以任意選取,但前提是保證二者的一致性,這樣可以確保Android客戶端和服務器加密和解密結(jié)果是相同的,同時消除不同服務器環(huán)境對數(shù)據(jù)加密的影響[9](服務器端可能會采用jsp,php和net等其中的一種進行編寫).該初始化向量會有2的64次方種組合,即使加密系統(tǒng)的密鑰被他人竊取,竊取者也要進行很多次嘗試才能夠破解整個加密系統(tǒng).本文的加密方案采用了產(chǎn)生隨機密鑰的設計方法,竊取者在持有初始化向量的情況下,密鑰也是不斷改變的,仍然無法破解整個加密過程,上述的諸多環(huán)節(jié)為整個加密系統(tǒng)添加了更多安全屏障.

      由于本文的加密方案是以DES加密算法為基礎的,從本質(zhì)上來講,是一種對稱加密方案,加密和解密的過程是互逆的,在操作過程上十分的相似.僅以Android客戶端來描述本文加密方案的實現(xiàn).

      本文加密方案的精髓主要包括:

      (1)構(gòu)造一個用于加密的實例對象cipher,需要為該對象傳入3個參數(shù),分別是所采用的加密算法、工作模式、填充模式;

      (2)初始化實例化對象cipher,即為cipher設置工作模式、密鑰和初始化向量.

      2.3 構(gòu)造加密的實例化對象并設置參數(shù)

      在具體實現(xiàn)中,Android軟件開發(fā)工具包(Android SDK)中有一個類Cipher,它構(gòu)造一個用于加密的實例化對象cipher,具體操作為

      括號中的3個參數(shù)就是需要傳入的,分別對應所采用的加密算法、工作模式、填充模式.本文的加密方案是以DES為基礎的,所以第一個參數(shù)設置為DES,工作模式設置為CBC(加密分組鏈接模式),填充模式設置為PKCS5Padding,明確定義分組塊的大小是8位[10].

      得到對象cipher后,只有對其進行初始化該對象才能完成加密工作,操作為

      括號中的3個參數(shù)是初始化時需要傳入的,分別對應于工作模式、密鑰、初始化向量,在客戶端需要對數(shù)據(jù)進行加密,所以第1參數(shù)設置為ENCRYPT_MODE(加密模式),第2個參數(shù)key是隨機產(chǎn)生的密鑰,第3個參數(shù)iv是商定好的初始化向量.

      完成上述兩步操作后,對象cipher就可以對數(shù)據(jù)進行加密和解密了,借助Base64進行編碼和解碼,就可以得到加密后的密文和解密后的明文.

      2.4 隨機產(chǎn)生密鑰

      本文的加密方案中,不采用傳統(tǒng)的固定密鑰的方式,而是每次數(shù)據(jù)傳輸都將產(chǎn)生一個全新的密鑰,Android客戶端負責隨機產(chǎn)生這個密鑰,并作為加密數(shù)據(jù)的一部分發(fā)送給服務端,服務端根據(jù)這個密鑰進行數(shù)據(jù)的解密.本文中的密鑰采用一個8字節(jié)長度的字節(jié)數(shù)組,初始時,密鑰是一個空字符串,每次隨機產(chǎn)生一個字符加入到密鑰中,反復迭代8次,最終得到一個8長度的字符串,該字符串將作為密鑰發(fā)送到服務端.通過這種隨機產(chǎn)生密鑰的方式,以犧牲計算機一小部分計算資源為代價,換取了傳統(tǒng)DES加密算法安全性的提升,使信息在傳遞的過程中不容易被篡改和竊取,在很大程度上保護了用戶信息的安全性[11].

      3 結(jié)果和評價

      3.1 客戶端數(shù)據(jù)的加密

      為驗證本文加密方案的正確性,首先在Android客戶端對測試數(shù)據(jù)進行加密,約定一個8字節(jié)長度的字節(jié)數(shù)組作為初始化向量,實驗中設為{1,2,3,4,5,6,7,8},隨機產(chǎn)生一個8長度的字符串作為密鑰,并設置工作模式為加密模式.完成上述操作后,進行加密操作,加密結(jié)果返回一個字節(jié)數(shù)據(jù),通過Base64[12]對字節(jié)數(shù)據(jù)進行編碼,得到測試數(shù)據(jù)最終的密文.實驗結(jié)果如圖3所示.

      圖3 Android客戶端加密執(zhí)行結(jié)果

      在待加密數(shù)據(jù)字段中填入“http://www.baidu.com”作為測試數(shù)據(jù),點擊“執(zhí)行”按鈕,得到隨機產(chǎn)生的密鑰和加密結(jié)果.

      上述實驗是在Android模擬器中進行的,并利用圖形界面化將實驗結(jié)果展示出來,實驗環(huán)境與真正的Android智能手機完全一致,所以加密的結(jié)果是十分可靠的.

      3.2 服務器端數(shù)據(jù)的解密

      有了上述客戶端對測試數(shù)據(jù)的加密過程,只要服務器端通過一系列操作最終得到的解密結(jié)果與測試數(shù)據(jù)的明文一致就可以證明本文提出的加密方案的正確性.

      實驗中,服務器端采用Java語言進行編寫,由于初始化向量是服務器端與Android客戶端約定好的,所以在服務器端初始化向量的設置與客戶端相同,服務器端的密鑰是客戶端隨機生成的,并跟隨測試數(shù)據(jù)一起發(fā)送給服務器,服務器端通過截取字符串就可以進行密鑰的設置.完成上述操作后,就可以對加密的密文進行解密了,實驗結(jié)果如圖4所示.

      圖4 服務器端解密執(zhí)行結(jié)果

      在正確設置了服務器端的各項參數(shù)后,從服務器端執(zhí)行結(jié)果可以看出,解密結(jié)果與測試數(shù)據(jù)的明文完全一致,都是“http://www.baidu.com”.這證明了改進后的加密方法是正確的.

      3.3 實驗結(jié)果評價

      通過上述實驗,改進后的加密方案可以保證加密和解密的結(jié)果的正確性,初始化向量的引入不僅提高了安全性,并且保證了該方案在多種服務器語言和環(huán)境中可以部署和執(zhí)行,使得該方案具有良好的通用性,不局限于某種特定的語言和環(huán)境.

      本文中提出的加密方案是基于傳統(tǒng)的DES加密算法進行改進的,充分地分析了傳統(tǒng)DES加密算法的缺點,單純地依賴密鑰的保密性來保證信息的安全性.針對該缺點,引入了初始化向量和密鑰隨機產(chǎn)生的方案,初始化向量的引入使得改進后的加密方案在加密和解密的過程中不再完全依賴密鑰,而是需要初始化向量的共同參與,也就是說加/解密的結(jié)果是密鑰和初始化向量共同作用的結(jié)果.傳統(tǒng)方法的另外一個缺點就是密鑰的固定性,針對這一缺點,每次通信,客戶端隨機產(chǎn)生密鑰,打破了固定性,進一步保證了加/解密過程的安全性.

      在信息安全日益重要的今天,本文提出的加密方案為Android客戶端與服務器進行信息交互時加密操作提供了一個可靠的解決方案,克服了傳統(tǒng)算法的缺點,具有更好的使用性.

      [1] 蔣紹林,王金雙,張濤,等.Android安全研究綜述[J].計算機應用與軟件,2012,29(10):205-210.

      [2] 胡美燕,劉然慧.DES算法安全性的分析與研究[J].內(nèi)蒙古大學學報:自然科學版,2005,36(6):95-99.

      [3] 賀紅,馬紹漢.隨機算法的一般性原理[J].計算機科學,2002,29(1):90-92.

      [4] 馮登國.國內(nèi)外密碼學研究現(xiàn)狀及發(fā)展趨勢[J].通信學報,2002,23(5):18-26.

      [5] 劉浪,周新衛(wèi).基于DES對稱加密體制的探討[J].科技廣場,2012,10:10-13.

      [6] 普運偉,耿植林,樓靜.從DES算法論分組密碼的設計原則[J].微機發(fā)展,2005,15(9):56-59.

      [7] 李尚恩.動態(tài)模擬方式詳解DES輪密鑰生成[J].智能計算機與應用,2013,3(6):91-94.

      [8] 管瑩,敬茂華.DES算法原理及實現(xiàn)[J].電腦編程技巧與維護,2009(4):5-7.

      [9] 侯淑英,韓玲.服務器端編程技術(shù)比較分析[J].渤海大學學報:自然科學版,2007,28(2):185-186.

      [10] 姜春風.基于Android行為的加密應用系統(tǒng)研究[J].煤炭技術(shù),2010,29(9):159-160.

      [11] 徐洪波,李穎華.DES加密算法在保護文件傳輸中數(shù)據(jù)安全的應用[J].信息網(wǎng)絡安全,2009(6):24-26.

      [12] 康武生,田立紅,曹偉.Base64編碼的實現(xiàn)與應用研究[J].長春大學學報,2006,16(2):69-72.

      Based on the DES encryption algorithm to encrypt communications between the server and the Android client

      SUN Yu-ze,CHI Jia,HU Liang
      (College of Computer Science and Technology,Jilin University,Changchun 130012,China)

      In this paper,based on the DES encryption algorithm to improve,set the appropriate mode,fill patterns,and initialization vector DES encryption algorithm in the Android platform,and the same on the server side settings to ensure the encryption and decryption of the results of the consistency of the results,achieved Android client and server-side encryption communication information to a large extent to ensure the safety and reliability of the information,which provides a viable solution for data encryption system under the Android.

      DES encryption algorithm;communication encryption;random secret key

      TP 309 [學科代碼] 520·1060

      A

      (責任編輯:石紹慶)

      1000-1832(2015)03-0078-05

      10.16163/j.cnki.22-1123/n.2015.03.017

      2014-08-20

      國家自然科學基金資助項目(61103197;61073009);國家高技術(shù)研究發(fā)展計劃項目(2011AA010101).

      孫語澤(1987—),男,碩士研究生;通訊作者:胡亮(1968—),男,教授,博士研究生導師,主要從事分布式系統(tǒng)和計算機網(wǎng)絡研究.

      猜你喜歡
      加密算法服務器端解密
      解密“熱脹冷縮”
      解密“一包三改”
      少先隊活動(2020年9期)2020-12-17 06:17:31
      炫詞解密
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應用
      成功(2018年10期)2018-03-26 02:56:14
      基于小波變換和混沌映射的圖像加密算法
      在Windows中安裝OpenVPN
      Hill加密算法的改進
      解密“大調(diào)解”
      對稱加密算法RC5的架構(gòu)設計與電路實現(xiàn)
      基于Arnold變換和Lorenz混沌系統(tǒng)的彩色圖像加密算法
      藁城市| 南投县| 东乡| 西青区| 溆浦县| 大庆市| 丰县| 永川市| 阜平县| 墨脱县| 格尔木市| 油尖旺区| 牙克石市| 镇宁| 红桥区| 黑龙江省| 昌黎县| 屯昌县| 清苑县| 丹阳市| 墨江| 休宁县| 乌恰县| 卫辉市| 永定县| 贡嘎县| 南宁市| 湟源县| 双鸭山市| 涪陵区| 临桂县| 枞阳县| 合山市| 鄱阳县| 仙桃市| 麦盖提县| 高邑县| 温泉县| 宝鸡市| 务川| 平凉市|