朱杰
隨著網(wǎng)絡的發(fā)展,網(wǎng)絡安全問題層出不窮。網(wǎng)絡攻擊、信息泄露等問題嚴重困擾著人們,網(wǎng)絡安全是一個非常大的課題,包括的范圍也非常廣,本文只從數(shù)據(jù)傳輸加密的角度對部分算法、傳輸協(xié)議和身份認證等方面進行描述,提出了一種較為安全的加密傳輸方法,并提供了部分源程序供參考。
1.引言
網(wǎng)絡的誕生和發(fā)展,極大地方便了我們的溝通和交流,人們的生產(chǎn)、生活日漸依賴網(wǎng)絡。自從網(wǎng)絡誕生起,網(wǎng)絡安全問題就一直如影隨形,濫用網(wǎng)絡技術(shù)缺陷和漏洞的網(wǎng)絡攻擊和入侵,更讓人們防不勝防。病毒、木馬、黑客成為人人皆知的名詞,由此產(chǎn)生了非常多的網(wǎng)絡安全技術(shù)和防護產(chǎn)品,如:防火墻、防病毒網(wǎng)關(guān)、入侵防御、漏洞掃描、日志分析等。要加強網(wǎng)絡安全還需要對網(wǎng)絡數(shù)據(jù)進行加密,對于網(wǎng)絡數(shù)據(jù)加密也有非常多的加密算法,如DES,3DES,RC2,RC4,IDEA,RSA,DSA,AES,BLOWFISH,MD5,PKCS等。
2.數(shù)據(jù)傳輸
建立網(wǎng)絡連接并傳送數(shù)據(jù)或文件必須通過網(wǎng)絡傳輸協(xié)議,它是計算機通信或網(wǎng)絡設備的共同語言,如TCP/IP,NetBEUI,DHCP,F(xiàn)TP等。瀏覽器是多數(shù)用戶訪問網(wǎng)絡資源最常用技術(shù),使用瀏覽器進行網(wǎng)絡連接和數(shù)據(jù)傳輸是建立在TCP/IP通信協(xié)議之上的HTTP(Hyper Text Transfer Protocol)協(xié)議,它是一個無狀態(tài)協(xié)議。它的請求方法有GET,POST,HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT。
3.身份認證
從網(wǎng)絡上獲取需要的信息,提供這些信息資源的是一個個的站點,通過互聯(lián)網(wǎng)把這些站點相互連接起來。通過超鏈接可以從一個網(wǎng)頁訪問到另外一個網(wǎng)頁,從一個站點連接到另外一個站點,所有的這一切組成一個龐大的網(wǎng),這就是Web。
4.安全加密實現(xiàn)
從服務器端產(chǎn)生4段隨機字符串,其中2段長度不小于255,另2段長度不小于50,4段字符串按照長短各一個配成兩對,把兩對字符串傳遞到驗證頁面,同時傳遞到客戶端,在客戶端(js)利用長度短的字符串為變量,把用戶名及密碼進行加密保存到長的字符串中,利用post把加密的包含用戶名及密碼的2段長字符串上傳驗證,服務器端收到這兩段字符串后,利用原有的2組字符串進行解密,并把加密出的用戶名及密碼在服務器端進行二次加密,與從數(shù)據(jù)庫中提取的用戶名及密碼進行比對,如果符合要求則通過身份驗證,否則判定為非法用戶。
4.1加密變量的獲取
String s1=””, s2=””, s3=””, s4=””; //添加4個字符串變量用來存放產(chǎn)生的隨機變量char numb []={’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,’N’,’O’,’Q’,’R’,’S’,’T’,’U’,’V’,’W’,’X’,’Y’, ’Z’,’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,’n’,’o’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,‘z’,’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’}; //設定隨機變量中的字符int i0=(int)( Math.random()*58);//產(chǎn)生0-57的隨機整數(shù),根據(jù)前面設定的字符數(shù),我們前面設定了
58個int i12=0, i34=0;//設定4個隨機數(shù)的長度i12=(int)(Math.random()*10)+40;
for ( i=0,i {s1= s1+numb[i0]; i0=(int)( Math.random()*58); } i0=(int)( Math.random()*58); i12=(int)( Math.random()*10)+40; for ( i=0,i {s2= s2+numb[i0]; i0=(int)( Math.random()*58); } i0=(int)( Math.random()*58); i34=(int)( Math.random()*10)+245; for ( i=0,i {s3= s3+numb[i0]; i0=(int)( Math.random()*58); } i34=(int)( Math.random()*10)+245; for ( i=0,i {s4= s4+numb[i0]; i0=(int)( Math.random()*58); } 然后把獲取的4個隨機數(shù)按照一、三一組,二、四一組,做一個md5加密并同時傳到用戶身份認證頁和客戶端用戶名及密碼上傳頁面。 4.2用戶端加密 用戶端錄入用戶名及密碼通過post上傳時,先經(jīng)過js把服務器傳到的隨機數(shù)md5解密,然后把取出的四段隨機數(shù)用于用戶名及密碼的加密: var usr_len=user.length;//獲取用戶名長度 var user_sub=””,pwd_sub=””; var asc2=0; var pwd_len=passwd.length;//獲取密碼長度 for (var i=0; i< usr_len; i++) { user_sub =s1.substring (i,i+1);// s1是來自服務器的s1 asc2= user_sub.charCodeAt(); if (asc2%2==0) { asc2=asc2*2; } s3=s3.substring(0,asc2)+ user_sub + s3.substring(asc2); } for (var i=0; i< pwd_len; i++) { pwd_sub =s2.substring (i,i+1);// s2是來自服務器的s2 asc2= pwd_sub.charCodeAt(); if (asc2%2==0) { asc2=asc2*2; } s4=s4.substring(0,asc2)+ user_sub + s4.substring(asc2); } 然后把s3和s4進行md5加密,并傳到服務器。 4.3服務器端解密驗證 int i_ur=cs3.length()-s3.length();//cs3是從客戶端傳到的s3 int i_pw=cs4.length ()-s4.length ();//cs4是從客戶端傳到的s4 String cusr=””,cpwd=””; String user_sub=””, pwd_sub=””; for (int i= i_ur-1; i< 0; i--) {user_sub =s1.substring (i,i+1);// s1是來自服務器的s1 asc2= user _sub.charCodeAt(); if (asc2%2==0) { asc2=asc2*2; } cusr= cs3.substring(asc2, asc2+1)+ cusr; } for (int i= i_pw-1; i< 0; i--) {pwd_sub =s2.substring (i,i+1);// s2是來自服務器的s2 asc2= pwd _sub.charCodeAt(); if (asc2%2==0) { asc2=asc2*2; } cpwd = cs4.substring(asc2, asc2+1)+ cpwd; } 5.結(jié)束語 最后把從客戶端傳到的用戶名和密碼進行md5加密,按照這2個參數(shù)從數(shù)據(jù)庫調(diào)取用戶的序列號(上一次退出系統(tǒng)時添加到數(shù)據(jù)庫中與用戶對應的隨機編號)及權(quán)限,如果取到,則按照取到的權(quán)限及序列號打開相應的頁面。 基金項目:山東省重大科技創(chuàng)新工程項目(2018CXGC1501)