畢業(yè)設(shè)計(jì)Usbkey方式系統(tǒng)登錄身份認(rèn)證_第1頁
畢業(yè)設(shè)計(jì)Usbkey方式系統(tǒng)登錄身份認(rèn)證_第2頁
畢業(yè)設(shè)計(jì)Usbkey方式系統(tǒng)登錄身份認(rèn)證_第3頁
畢業(yè)設(shè)計(jì)Usbkey方式系統(tǒng)登錄身份認(rèn)證_第4頁
畢業(yè)設(shè)計(jì)Usbkey方式系統(tǒng)登錄身份認(rèn)證_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、密 級 公 開 本科生畢業(yè)設(shè)計(jì)報(bào)告usbkey方式系統(tǒng)登錄身份認(rèn)證陶建飛 吳 芳(2007081205) (2007081124)指導(dǎo)教師姓名:劉 彥職 稱:副教授單 位:計(jì)算機(jī)科學(xué)系專 業(yè) 名 稱:計(jì)算機(jī)科學(xué)與技術(shù)設(shè)計(jì)提交日期:2011年4月25日設(shè)計(jì)答辯日期:2011年4月27日學(xué)位授予單位:黔南民族師范學(xué)院答辯委員會(huì)主席:設(shè) 計(jì) 評 閱 人:2011 年 4 月 28 日摘要:在今天這樣一個(gè)互聯(lián)網(wǎng)驅(qū)動(dòng)的社會(huì)中,網(wǎng)上銀行也稱在線銀行,已經(jīng)成為金融機(jī)構(gòu)整體發(fā)展策略中不可或缺的一部分。近年來使用網(wǎng)上銀行的用戶數(shù)量巨大增長,并且每年保持了穩(wěn)定的發(fā)展勢頭。網(wǎng)上銀行在給它的用戶帶來諸多便捷服務(wù)、給銀

2、行節(jié)省費(fèi)用支出和帶來更多利潤增長點(diǎn)的同時(shí),也承受著很多安全風(fēng)險(xiǎn)。很多銀行意識(shí)到了這一點(diǎn),紛紛采取行動(dòng),包括不斷教育用戶提高自身安全意識(shí),安裝殺毒軟件,防木馬軟件;采用硬件usb key或者動(dòng)態(tài)口令牌方式進(jìn)行身份認(rèn)證等。usb key是一種usb接口的硬件設(shè)備。它內(nèi)置單片機(jī)或智能卡芯片,有一定的存儲(chǔ)空間,可以存儲(chǔ)用戶的私鑰以及數(shù)字證書,利用usb key內(nèi)置的公鑰算法實(shí)現(xiàn)對用戶身份的認(rèn)證。由于用戶私鑰保存在密碼鎖中,理論上使用任何方式都無法讀取,因此保證了用戶認(rèn)證的安全性。usb key產(chǎn)品最早是由加密鎖廠商提出來的,原先的usb加密鎖主要用于防止軟件破解和復(fù)制,保護(hù)軟件不被盜版,而usb ke

3、y的目的不同,usb key主要用于網(wǎng)絡(luò)認(rèn)證,鎖內(nèi)主要保存數(shù)字證書和用戶私鑰。目前工行的usb key產(chǎn)品為“u盾”,招行的usb key產(chǎn)品為“友key”,兩者的主要供應(yīng)商都是usb key的專業(yè)廠商捷德公司。在今天企業(yè)信息化的發(fā)展形勢下,簡單的用戶密碼驗(yàn)證方式已經(jīng)暴露出很多問題,給管理和安全上帶來很大隱患。所以需要一種安全性更高的而且人為影響因素小的用戶認(rèn)證方式來替代原有方式。為此本課題將從硬件數(shù)字加密方向開發(fā)出類似于網(wǎng)銀登錄的ukey登錄的身份認(rèn)證系統(tǒng)。目 錄第一章 前言 41.1 設(shè)計(jì)目的 41.2 背景 41.3 課題 5第二章 環(huán)境的配置 52.1 設(shè)計(jì)環(huán)境 52.2 設(shè)計(jì)涉及到的

4、相關(guān)軟件 52.3 設(shè)計(jì)開發(fā)語言 5第三章 系統(tǒng)的結(jié)構(gòu)分析與設(shè)計(jì)53.1 儲(chǔ)備知識(shí) 63.2設(shè)計(jì)要點(diǎn)分析 63.1.1 調(diào)查 63.1.2 可行性分析 63.3 模塊分析設(shè)計(jì) 6第四章 系統(tǒng)實(shí)現(xiàn)與系統(tǒng)測試 84.1 加密鎖內(nèi)部結(jié)構(gòu) 94.2 usbkey身份認(rèn)證驗(yàn)證原理模塊 104.3 部分設(shè)計(jì)成果展示圖片 114.4 設(shè)計(jì)相關(guān)代碼 164.1.1 前臺(tái)相關(guān)代碼 164.1.2 后臺(tái)相關(guān)代碼 16第五章 小結(jié) 165.1 系統(tǒng)開發(fā)中遇到的問題 165.2 小組分工與協(xié)作 17參考文獻(xiàn) 17致謝 18第一章 前言1.1 設(shè)計(jì)目的本次畢業(yè)設(shè)計(jì)我們選擇了usbkey身份認(rèn)證作為畢業(yè)設(shè)計(jì)課題。1.2

5、背景而今是一個(gè)網(wǎng)絡(luò)信息時(shí)代在線交易(購物,付款),收發(fā)電子郵件,在線聊天交友及表單簽名,文件數(shù)字簽名等操作的用戶越來越多、對自身身份認(rèn)證的要求也越來越高,如果使用一般的軟件進(jìn)行身份認(rèn)證將會(huì)造成;1、軟件加密容易被破解2、 文件在傳輸過程中易被截獲、纂改3、加密軟件損壞,文件無法恢復(fù)。4、 用戶名密碼太長容易忘記 5、存儲(chǔ)在計(jì)算機(jī)上容易被盜 6、 輸入用戶名和密碼時(shí)容易被盜或多個(gè)信息系統(tǒng)的密碼混淆等 。usbkey認(rèn)證系統(tǒng)安全登錄解決方案:usbkey是一種通過usb (通用串行總線接口)直接與計(jì)算機(jī)相連、具有密碼于是usb接口設(shè)備,usbkey通過usb端口提供的電源來工作,不需要額外的電源、

6、具有密碼驗(yàn)證功能、可靠高速的小型存儲(chǔ)設(shè)備。usbkey 是對現(xiàn)行的網(wǎng)絡(luò)安全體系的一個(gè)極為有力的補(bǔ)充,通過中國信息安全測評認(rèn)證中心認(rèn)證的網(wǎng)絡(luò)安全產(chǎn)品。基于可信計(jì)算基及智能卡技術(shù)把易用性,便攜性和最高級別的安全性帶給了使用microsoft ie或netscape navigator進(jìn)行web訪問,在線交易(購物,付款),收發(fā)電子郵件,在線聊天交友及表單簽名,文件數(shù)字簽名等操作的用戶,保證用戶在usbkey下的操作不可篡改、抵賴。usbkey最大的特點(diǎn)就是安全性高,技術(shù)規(guī)范一致性強(qiáng),操作系統(tǒng)兼容性好,攜帶使用靈活。usbkey作為網(wǎng)絡(luò)身份認(rèn)證令牌,它是web站點(diǎn)用戶密碼的安全便攜存儲(chǔ)器。usbke

7、y代表用戶身份,通過使用usbkey, 可以控制同一時(shí)間只能有一個(gè)用戶登陸網(wǎng)頁。由于usbkey使用usb接口,因此具有體積小,速度快,兼容性好的特點(diǎn)而且usbkey自身所具備的存貯器可以用來存儲(chǔ)一些個(gè)人信息或證書,usbkey的內(nèi)部密碼算法可以為數(shù)據(jù)傳輸提供安全的管道,usbkey是適用于單機(jī)或網(wǎng)絡(luò)應(yīng)用的身份認(rèn)證安全防護(hù)產(chǎn)品。 1.3 課題硬件加密。本課題以usbkey硬件為設(shè)計(jì)對象,設(shè)計(jì)的內(nèi)容包括。第二章 設(shè)計(jì)環(huán)境2.1運(yùn)行環(huán)境操作系統(tǒng):windows xp 內(nèi)存:1gcpu主頻:2.01ghz2.2開發(fā)工具visualstudio 20052.3開發(fā)語言c#面向?qū)ο蟪绦蛟O(shè)計(jì)語言第三章 系

8、統(tǒng)的結(jié)構(gòu)分析與設(shè)計(jì)3.1 儲(chǔ)備知識(shí) 完成課題的條件:本課題的研究設(shè)計(jì)難度較大,需要掌握的知識(shí)較多,也需要花費(fèi)大量時(shí)間,由于學(xué)習(xí)單片機(jī)設(shè)計(jì)的時(shí)間有限,對這方面知識(shí)的認(rèn)識(shí)和掌握并不是很透徹,并且沒有相關(guān)方面的實(shí)踐經(jīng)驗(yàn),應(yīng)用起來就顯得相對很難。設(shè)計(jì)還沒有投入到真真切切的環(huán)境中去,不過我一直在致力于這方面知識(shí)的收集和整理。若要順利完成該usbkey身份認(rèn)證的設(shè)計(jì),要認(rèn)真做好需求分析,加強(qiáng)自學(xué),進(jìn)一步提高usbkey的使用方法,同時(shí)要積極與指導(dǎo)教師溝通,認(rèn)真聽取指導(dǎo)教師的指導(dǎo)意見和要求。盡管自身?xiàng)l件在做該課題設(shè)計(jì)并不是很有實(shí)力,但是通過指導(dǎo)教師的幫助,小組人員共同努力,認(rèn)真做好每一個(gè)內(nèi)容,該課題設(shè)計(jì)一定

9、會(huì)順利完成。綜合該usbkey設(shè)計(jì)的內(nèi)容和要求,若要很好地完成該課題需要以下條件:1認(rèn)真進(jìn)行課題研究,做好自己的本職工作,全身心投入到設(shè)計(jì)過程中;2需要指導(dǎo)教師耐心指導(dǎo),多給學(xué)生提供意見和方法,以及經(jīng)驗(yàn)幫助;3同組人員通力合作,共同討論,相互幫助;4大量查閱相關(guān)書籍和資料;5向有相關(guān)系統(tǒng)開發(fā)經(jīng)驗(yàn)的前輩請教;3.1.1 調(diào)查 調(diào)查的具體內(nèi)容:1對使用工行“u盾”進(jìn)行過網(wǎng)購的部分學(xué)生進(jìn)行調(diào)查分析。2.了解硬件的構(gòu)造,以及相關(guān)固化函數(shù)。3.向?qū)I(yè)人士請教,指點(diǎn)設(shè)計(jì)的關(guān)鍵之處。3.1.2 可行性分析可行性分析:通過可行性分析對所開發(fā)的usbkey從適用性、經(jīng)濟(jì)效益以及開發(fā)成本進(jìn)行研究。通過調(diào)查和usb

10、key設(shè)計(jì)目標(biāo)分析,對要開發(fā)的硬件、軟件從技術(shù)、經(jīng)濟(jì)、資源和管理進(jìn)行可行性的分析。以保證資源合理使用、避免失誤和浪費(fèi)。l 技術(shù)可行性:本課題采用c#語言進(jìn)行編程,使用查找鎖函數(shù),獲取鎖基本信息,固化算法函數(shù),讀寫存儲(chǔ)器函數(shù)以及增強(qiáng)算法函數(shù)來實(shí)現(xiàn)身份認(rèn)證。l 經(jīng)濟(jì)可行性: 本課題使用的單片機(jī), 具有極高的性能價(jià)格比,受到人們的重視和關(guān)注。它體積小、重量輕、抗干擾能力強(qiáng)、環(huán)境要求不高、價(jià)格低廉、可靠性高、靈活性好、開發(fā)較為容易,而且操作的時(shí)間非常短,因此使用起來非常方便。l 操作可行性:要進(jìn)行身份驗(yàn)證,必須要在客戶端安裝鎖的驅(qū)動(dòng)程序,它其實(shí)不是真正的驅(qū)動(dòng)程序,而是安裝必要的客戶端控件。然后安裝us

11、bkey開發(fā)工具,對讀寫鎖進(jìn)行設(shè)置,生成加密代碼和模板工程等其他相關(guān)配置,將基本實(shí)現(xiàn)用戶身份認(rèn)證功能。 3.2 模塊分析設(shè)計(jì) (1)、設(shè)計(jì)流程設(shè)計(jì)可行性分析階段酒店usbkey硬件購買認(rèn)證函數(shù)庫的學(xué)習(xí)酒店室內(nèi)設(shè)計(jì)階段軟硬件結(jié)合并測試編寫程序控制代碼(2)、設(shè)計(jì)的具體步驟安排:前期(設(shè)計(jì)準(zhǔn)備階段):此階段根據(jù)選題的具體內(nèi)容和指導(dǎo)老師進(jìn)行細(xì)致的溝通,聽取老師的意見和向老師表達(dá)自己的設(shè)計(jì)理念。 對設(shè)計(jì)進(jìn)行可行性分析和對相關(guān)資料的收集整理,購買usbkey硬件。 中期(設(shè)計(jì)的具體實(shí)施階段):該階段按部就班地進(jìn)行設(shè)計(jì),并根據(jù)實(shí)際情況修改設(shè)計(jì)細(xì)節(jié),同時(shí)在設(shè)計(jì)上遇到問題及時(shí)向老師求助。定期向老師匯報(bào)設(shè)計(jì)進(jìn)度

12、和呈現(xiàn)設(shè)計(jì)成果。詳細(xì)分析usbkey硬件內(nèi)部結(jié)構(gòu)、以及起固化函數(shù)庫。理清設(shè)計(jì)思路,并根據(jù)設(shè)計(jì)安排查閱相應(yīng)書籍和搞懂實(shí)現(xiàn)的關(guān)鍵操作。編寫程序代碼。后期(設(shè)計(jì)的整合編制階段): 該階段主要是對設(shè)計(jì)成果進(jìn)行相應(yīng)整合,制作成設(shè)計(jì)作品,同時(shí)應(yīng)反復(fù)和老師交流,更正設(shè)計(jì)中的不足,完善設(shè)計(jì)作品。 主要工作是對編寫的代碼進(jìn)行調(diào)試,以及軟硬件結(jié)合并測試。 3.2設(shè)計(jì)要點(diǎn)分析 該設(shè)計(jì)我們使用visualstudio2005軟件進(jìn)行代碼編寫,安裝驅(qū)動(dòng),在加密鎖中寫入用戶名,密碼。通過頁面來進(jìn)行身份認(rèn)證的測試。第四章 系統(tǒng)實(shí)現(xiàn)與系統(tǒng)測試4.1加密鎖內(nèi)部結(jié)構(gòu)圖:keyid固化硬件加密算法512字節(jié)數(shù)據(jù)儲(chǔ)存區(qū)-可讀可寫密碼

13、區(qū)(儲(chǔ)存讀寫密碼)硬件增強(qiáng)算法儲(chǔ)存增強(qiáng)算法密碼320到430的儲(chǔ)存空間用于儲(chǔ)存網(wǎng)站及相關(guān)的信息 加密鎖內(nèi)部結(jié)構(gòu)4.2 usbkey身份認(rèn)證驗(yàn)證原理模塊:服務(wù)器端產(chǎn)生隨機(jī)數(shù)服務(wù)器端使用相應(yīng)的算法對隨機(jī)數(shù)時(shí)行加密,生成服務(wù)端驗(yàn)證碼服務(wù)器端將隨機(jī)數(shù)發(fā)給客戶端服務(wù)器端將服務(wù)器端驗(yàn)證碼與從客戶端返回的客戶端驗(yàn)證碼相比較,如果相同,則為合法用戶,否則為非法用戶客戶端使用加密鎖對隨機(jī)數(shù)進(jìn)行加密后,生成客戶端驗(yàn)證碼并返回給服務(wù)器端usbkey身份認(rèn)證驗(yàn)證原理模塊圖4.3部分設(shè)計(jì)成果圖片展示 圖一、沒有插入usbkey 圖二、沒有插入usbkey 點(diǎn)擊提交后的效果 圖三、插入usbkey,并且已經(jīng)寫入用戶名和密

14、碼 圖四、插入usbkey后,返回后的效果圖示 圖五、插入usbkey 返回后修改隨機(jī)數(shù)所得到的效果4.4 相關(guān)設(shè)計(jì)代碼 4.4.1 前臺(tái)代碼 0; ) i -= 4; var digit = ( n i ) & 0xf; if (!start | digit != 0) start = false; result += digitarraydigit; return ( result = ? 0 : result );function button1_click() var devicepath,ret,n,mylen;try/建立操作我們的鎖的控件對象,用于操作我們的鎖 var aobje

15、ct = new activexobject(syunew3a.s_simnew3); /查找是否存在鎖,這里使用了findport函數(shù)devicepath = aobject.findport(0);if( aobject.lasterror!= 0 )window.alert ( 沒有發(fā)現(xiàn)加密鎖,請插入加密鎖!);return ; /讀取鎖的唯一id form1.keyid.value=tohex(aobject.getid_1(devicepath)+tohex(aobject.getid_2(devicepath);/getid_1()返回指定加密鎖的id號(hào)的前4個(gè)字節(jié);加密鎖的id號(hào)

16、由8個(gè)字節(jié)組成,getid_2()功能:返回指定設(shè)備路徑的加密鎖的id號(hào)的后4個(gè)字節(jié); if( aobject.lasterror!= 0 )/返回結(jié)果如果lasterror的值為0,則表示方法執(zhí)行成功,則返回結(jié)果為該加密鎖的id號(hào)的前4個(gè)字節(jié)。如果lasterror值為其它值,則表示方法失敗,錯(cuò)誤原因可以參見錯(cuò)誤代碼含義 window.alert( err to getid,errcode is:+aobject.lasterror.tostring(); return ;/獲取設(shè)置在鎖中的用戶名,使用默認(rèn)的讀密碼ffffffff,ffffffffret=aobject.yreadex(0,

17、1,ffffffff,ffffffff,devicepath);/yreadex ()功能:從加密鎖的指定儲(chǔ)存空間地址讀出數(shù)據(jù),該函數(shù)用于讀取一批數(shù)據(jù)mylen =aobject.getbuf(0);/在調(diào)用yreadex方法后,應(yīng)立即調(diào)用getbuf方法從數(shù)據(jù)緩沖區(qū)中取回?cái)?shù)據(jù),如果返回結(jié)果為0,則表示方法執(zhí)行成功,調(diào)用getbuf方法從數(shù)據(jù)緩沖區(qū)中取回?cái)?shù)據(jù)。如果為其它值,則表示方法失敗form1.username.value=aobject.yreadstring(1,mylen, ffffffff, ffffffff, devicepath);/yreadstring ( )功能:從加密鎖

18、的指定起始位置讀取字符串,返回結(jié)果如果lasterror的值為0,則表示方法執(zhí)行成功,則返回結(jié)果為加密鎖address的儲(chǔ)存空間中儲(chǔ)存的字符串。if( aobject.lasterror!= 0 )window.alert( err to getusername,errcode is:+aobject.lasterror.tostring();return ;/獲到設(shè)置在鎖中的用戶密碼,使用默認(rèn)的讀密碼ffffffff,ffffffffret=aobject.yreadex(20,1,ffffffff,ffffffff,devicepath);/mylen =aobject.getbuf(0)

19、;form1.password.value=aobject.yreadstring(21,mylen,ffffffff, ffffffff, devicepath);/21表示讀出的字符串儲(chǔ)存在加密鎖的起始位置是21if( aobject.lasterror!= 0 )window.alert( err to getpwd,errcode is:+aobject.lasterror.tostring();return ;/這里返回對隨機(jī)數(shù)的hash結(jié)果form1.return_encdata.value=aobject.encstring(form1.rnd.value,devicepath)

20、;/encstring()功能:使用增強(qiáng)算法對字符串進(jìn)行加密,form1.rnd.value是要加密的字符串if( aobject.lasterror!= 0 )window.alert( err to strenc,errcode is:+aobject.lasterror.tostring();return ; form1.submit();catch (e) alert( + : + e.message);-                 身份認(rèn)證的原理概述a、第一種方法只是簡單地從客戶端讀取鎖

21、的唯一id或從鎖中讀取用戶的用戶名及密碼,這樣就容易被一些黑客編寫一些程序?qū)@些進(jìn)行模仿,從而繞過從客戶端讀取加密鎖。b、方法二則是先從服務(wù)器端生產(chǎn)一個(gè)隨機(jī)數(shù),然后將該隨機(jī)數(shù)發(fā)給客戶端,同時(shí)服務(wù)器端使用與鎖對應(yīng)的增強(qiáng)算法對該隨機(jī)數(shù)進(jìn)行加密,生成一服務(wù)器端驗(yàn)證碼;c、而在客戶端,在獲得服務(wù)器商發(fā)過來的隨機(jī)數(shù)后,客戶端使用對應(yīng)的算法同樣對該隨機(jī)數(shù)進(jìn)行加密,生成一客戶端驗(yàn)證碼,返回給服務(wù)器端,d、如果相同,則為合法用戶,如果不相同,則為非法用戶。e、只有在服務(wù)器的加密密鑰與設(shè)置在鎖中的加密密鑰一致時(shí),兩邊加密的結(jié)果才能相符,才能被合法驗(yàn)證。 4.4.2 后臺(tái)代碼 using system;using

22、 system.data;using system.configuration;using system.web;using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;namespace testkey public partial class _default : system.web.ui.page protected void page_lo

23、ad(object sender, eventargs e) this.title = usbkey客戶服務(wù)端身份認(rèn)證; if (keyid.text = ) system.random random = new system.random();/system.random類生成隨機(jī)數(shù).next()返回一個(gè)02147483647之間的整數(shù) sessionrnd = rnd.text = random.next().tostring(); protected void button1_click(object sender, eventargs e) /獲取客戶端返回的唯一id response

24、.write(); response.write(keyid是:); response.write(keyid.text); response.write(); /獲取客戶端返回設(shè)置在key中的用戶名 response.write(); response.write(用戶名是:); response.write(username.text); response.write(); /獲取客戶端返回設(shè)置在key中的用戶登錄密碼 response.write(); response.write(用戶登錄密碼是:); response.write(password.text); response.wr

25、ite(); /輸出當(dāng)前隨機(jī)數(shù) response.write(); response.write(隨機(jī)數(shù)是:); response.write(sessionrnd); response.write(); / 返回用戶鎖對隨機(jī)數(shù)的hash結(jié)果 response.write(); response.write(用戶返回的hash結(jié)果是:); response.write(return_encdata.text); response.write(); /這里在服務(wù)器端對隨機(jī)數(shù)進(jìn)行同樣的加密運(yùn)算 string strdata, m_strenc, key; /key:即加密密鑰,這個(gè)要與設(shè)置在加密鎖

26、中的密鑰一致 key = 1234567890abcdef1234567890abcdef; /strdata:要進(jìn)行加密的數(shù)據(jù) strdata = sessionrnd.tostring(); /在服務(wù)器端對數(shù)據(jù)進(jìn)行加密運(yùn)算 m_strenc = global.m_softkey.strenc(strdata, key);/strdata是要加密的數(shù)據(jù)。key是密鑰 response.write(); response.write(服務(wù)器要運(yùn)算的隨機(jī)數(shù)是:); response.write(strdata); response.write(); response.write(); respo

27、nse.write(服務(wù)器hash的結(jié)果是:); response.write(m_strenc); response.write(); /比較客戶端加密鎖返回的加密結(jié)果與服務(wù)端的加密結(jié)果是否相符,如果相符就認(rèn)為是合法用戶,由于使用了隨機(jī)數(shù),從而實(shí)現(xiàn)了一次一密的高安全性,可以用于高安全性的身份驗(yàn)證 if (m_strenc = return_encdata.text) response.write(該用戶是合法用戶); / response.redirect(); else response.write(該用戶不是合法用戶); response.write(); protected void

28、keyid_textchanged(object sender, eventargs e) protected void username_textchanged(object sender, eventargs e) protected void password_textchanged(object sender, eventargs e) protected void rnd_textchanged(object sender, eventargs e) protected void return_encdata_textchanged(object sender, eventargs

29、e) 增強(qiáng)加密算法 public string strenc(string instring, string key)/使用增強(qiáng)算法strenc(),加密字符串,instring是要加密的字符串,key是加密密鑰,提示:要加密字符串以8個(gè)字節(jié)為一個(gè)分組;要加密的字符串少于8個(gè)字節(jié)時(shí),不足的字節(jié)補(bǔ)數(shù)據(jù)0;要加密的字符串大于8個(gè)字節(jié),但不是8的倍數(shù)時(shí),多余的數(shù)據(jù)不作加密處理 byte b, outb; byte temp = new byte8, outtemp = new byte8;/字符串的加密過程,是先將字符串轉(zhuǎn)化為字節(jié)數(shù)組,然后調(diào)用cal函數(shù)對數(shù)據(jù)進(jìn)行加密,加密后的數(shù)據(jù)將會(huì)以16進(jìn)制字符

30、串的形式返回,所以加密后的字符串的長度是原來要加密字符串的長度(含結(jié)束字符)的兩倍,且至少不少于16個(gè)字符串, int n, i, nlen, outlen; string outstring; nlen = lstrlena(instring) + 1; if (nlen 8) outlen = 8; else outlen = nlen; b = new byteoutlen; outb = new byteoutlen; copystringtobyte(b, instring, nlen); b.copyto(outb, 0); for (n = 0; n = outlen - 8;

31、n = n + 8) for (i = 0; i 8; i+) tempi = bi + n; encode(temp, outtemp, key); for (i = 0; i 8; i+) outbi = outtempi + n; outstring = ; for (n = 0; n = outlen - 1; n+) outstring = outstring + outbn.tostring(x2); return outstring; 第五章 小結(jié)5.1、usbkey計(jì)中遇到的問題在本次在系統(tǒng)的開發(fā)中,我們遇到了不少的問題,其中遇到的主要問題是開發(fā)出類似于網(wǎng)銀登錄的基于b/s的使用ukey登錄的身份認(rèn)證系統(tǒng),以實(shí)現(xiàn)不同

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論