Java卡電子錢包試驗(yàn)報(bào)告_第1頁(yè)
Java卡電子錢包試驗(yàn)報(bào)告_第2頁(yè)
Java卡電子錢包試驗(yàn)報(bào)告_第3頁(yè)
Java卡電子錢包試驗(yàn)報(bào)告_第4頁(yè)
Java卡電子錢包試驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java卡電子錢包實(shí)驗(yàn)報(bào)告需求分析可以應(yīng)用于現(xiàn)實(shí)中的 Java卡電子錢包需要有電子錢包的安裝、選擇與撤銷選擇、存款、借款、獲取錢包余額以及身份驗(yàn)證。 等功能。定義4條命令,分別為校驗(yàn)PIN加錢、減錢和讀余額。其中,加錢、減錢 和讀余額都是對(duì)錢包余額的操作.PIN的引入增加了錢包應(yīng)用的安全性, Wallet應(yīng) 用要求在進(jìn)行交易(加錢或減錢)之前,必須進(jìn)行PIN校驗(yàn),只有PIN校驗(yàn)成功后,才能對(duì)余額數(shù)據(jù)進(jìn)行修改。同時(shí)在取消選擇應(yīng)用時(shí),重載了deselect方法將PIN的校驗(yàn)結(jié)果清空,從而要求在每次選擇應(yīng)用后都需進(jìn)行PIN驗(yàn)證,避免了安全漏洞的產(chǎn)生。系統(tǒng)結(jié)構(gòu)圖安裝public staticvoid

2、install(byte bArray,short bOffset, byte bLength)new Wallet(bArray ,bOffset,bLength);選擇開(kāi)始noL*遹E次數(shù)等于黎I* yesT1返回true返回false結(jié)束public boolean select() (if ( pin .getTriesRemaining()=0) return false ;return true ;撤銷選擇public void deselect()(pin .reset();開(kāi)始將已輸入的pin重置結(jié)束存款yes有進(jìn)行身份驗(yàn)證?,充哨金大一0小十注十叱 BALANCE,一noye

3、s拋出異常I /而吳TJ2。小 MAX_BALANCE一endBalance=Balance+n 將結(jié)果放到響應(yīng)apdu 發(fā)送出去void debit(APDU apdu) / 充值(/ 這里 /if (! pin .isValidated()ISOException. throwIt (SW_VERIFICATION_REQUIRED );/short n,sum;byte 口 buf = apdu.getBuffer();拋出異常拋出異常short p2=( short )getUnsignedByte(bufISO7816.OFFSET_P2 );n=( short )(bufISO78

4、16.數(shù).short強(qiáng)制轉(zhuǎn)換3UE=余額 +充值OFFSET_P1 *256+p2);/取p1,p2 轉(zhuǎn)化為一個(gè)開(kāi)始sum=( short )( Balance +n);if (n0 x00)(if (sum=0 x00) (Balance =( short )( Balance + n);buf0=(byte )( Balance 8);buf1=(byte )( Balance &0 xff);apdu.setOutgoingAndSend(byte )0,( byte )2); else (ISOException. throwIt ( short )0 x6102); else( IS

5、OException. throwIt ( short )0 x6101);取款開(kāi)始yes )沒(méi)有迸行身份臉證?. I no拋出異常吧蕉額大于0小于等至Fr?A%C7Q_A0GWf?- no、yes拋出異常wI4V余跪大于消費(fèi)金額匚:n。 ; yes拋出異常Balance=Balance-m_,將結(jié)果放到響應(yīng)apdu發(fā)V 送出去 Jendvoid credit(APDU apdu) / 消費(fèi) buf ( /這里 /if (! pin .isValidated()ISOException. throwIt ( SW_VERIFICATION_REQUIRED ); /short m;byte 口

6、 buf = apdu.getBuffer();short p2=( short )getUnsignedByte(bufISO7816.OFFSET_P2 );m=( short )(bufISO7816. OFFSET_P1 *256+p2);/ 取 1,p2 轉(zhuǎn)化為一個(gè)數(shù).short強(qiáng)制轉(zhuǎn)換if (m0)( if ( Balance m) (Balance =( short )( Balance -m);buf0=(byte )( Balance 8);buf1=(byte )( Balance &0 xff);apdu.setOutgoingAndSend(byte )0,( byte

7、 )2);) else( ISOException. throwIt ( short )0 x6104);) else( ISOException. throwIt ( short )0X6103);)獲取錢包余額public void getBalance(APDU apdu)(byte 口 buf = apdu.getBuffer();buf0=(byte )( Balance 8);buf1=(byte )( Balance &0 xff);apdu.setOutgoingAndSend(byte )0,( byte )2);身份驗(yàn)證(byte buffer=apdu.getBuffer

8、();byte byteRead =( byte )(apdu.setIncomingAndReceive();if (pin .check(buffer,ISO7816.OFFSET_CDATA ,byteRead)= falseISOException. throwIt ( SW_VERIFICATION_FAILED );Process 方法public void process(APDU apdu)( if ( selectingApplet()( return ;byte buf = apdu.getBuffer();switch (bufISO7816. OFFSET_INS )

9、(case ( byte ) DEBIT : debit(apdu);break ;case ( byte ) CREDIT : credit(apdu);break ;case ( byte ) GET_BALANCE : getBalance(apdu); break ;/ case ( byte ) VERIFY : verify(apdu); break ; / default : ISOException. throwIt (ISO7816. SW_INS_NOT_SUPPORTED ); APDU發(fā)送Name選擇DEBITCREDIT 00CLA INS00 a4000 x010

10、x02P1 P2 Lc錢數(shù) 00錢數(shù)00VERIFY 00 0 x03 00 00 03GET_BALANCE 000 x05 00 00 00Data Field Le (size of response) 返回9000成功9000失敗 6101 6102成功9000失敗 6104 6103密碼成功9000未經(jīng)驗(yàn)證進(jìn)行其他操作0 x6301密碼錯(cuò)誤,或輸入三次均錯(cuò)鎖定6300成功9000失敗 6104 6103測(cè)試數(shù)據(jù)1.cm /select |wallet1選擇功能= 00 A4 04 00 07 77 61 6C 6C 65 74 31 00(189100 nsec)=90 00成功St

11、atus: No Errorc.100100cm send 0003000003100100= 00 03 00 00 03 10 01 00(545900 nsec)=90 00Status: No Errorcm send 0001271000= 00 01 27 10 00(291700 nsec)=27 10 90 00Status: No Errorcm send 0005000000= 00 05 00 00 00(266400 nsec)=27 10 90 00Status: No Errorcm /select |wallet2= 00 A4 04 00 07 77 61 6C

12、 6C 65 74 32 00 (348700 nsec)=90 00.Status: No Error2.cm /select |wallet1= 00 A4 04 00 07 77 61 6C 6C 65 74 31 00 (253500 nsec)=90 00.Status: No Errorcm send 0003000003100101= 00 03 00 00 03 10 01 01(7044 usec)=63 00c.Status: Authentication failedcm send 0003000003100101= 00 03 00 00 03 10 01 01(444

13、000 nsec)=63 00驗(yàn)證身份,輸入正確密碼成功充值100成功獲取余額撤銷選擇選擇密碼錯(cuò)誤第一次密碼錯(cuò)誤第2次Status: Authentication failedcm send 0003000003100101= 00 03 00 00 03 10 01 01(365700 nsec) send 0003000003100100= 00 03 00 00 03 10 01 00(250800 nsec) /select |wallet1= 00 A4 04 00 07 77 61 6C 6C 65 74 31 00(223200 nsec) send 0001271000= 00

14、 01 27 10 00(256000 nsec) ssr.d 0001271000 = 00 01 27 10 0Q (15S15 msec) send 0002000090= 00 02 00 00 00一(9274 msec)-61 03a.Statiis: 0 x6103花51,不可以,6103send 303213ec00,DO 02 13 EC 00 (593 mse) send GOO2136E0O= 00 02 13 BB 00(4371 msec)。13 ES SO 00Status: No Errcx花50,剩0 cm ifcnd 0002139800 = 00 02 13

15、 3 8 00(768E msec) 00 00 50 00.Status; No Error花1,不可以,6104crr send 0002006400 = 00 02 00 4 00.d.(7302 msec) /select I wallet!=00 且4 04 00 07 71 61 6C Cc 65 74 31 00walletl.13611 msec TOC o 1-5 h z 90 Q0,Statius: No Error cm send 0001006400= 00 01 00 64 00d,649臺(tái) r.EeCl send 0001271000 TOC o 1-5 h z 0

16、0 01 2T 10 00.(6059 msec) send 0014dbc00= 00 DI W BC 00.M.(3943 mDc) send D331DD640D= 00 01 t)D 64 00d.(4574 msec) /select |walletl = 00 A4 04 00 07 71 tl 6C 6C 6S 74 31 00willetl.(3446 msec) send 0D0175J4D0 - 00 01 15 94 00. .u.(4B74 msec) 00 01 00 00 00(4SJ6 msec) =61 01a.Status: 0 x6101關(guān)鍵代碼安裝publ

17、ic static void install( byte bArray, short bOffset, byte bLength) (new Wallet( bArray ,bOffset,bLength);選擇public boolean select() (if ( pin .getTriesRemaining()=0) return false ;return true ;撤銷選擇public void deselect()(pin .reset();存款void debit(APDU apdu) / 充值 (/這里 /if (! pin .isValidated()ISOExcepti

18、on. throwIt (SW_VERIFICATION_REQUIRED );/short n,sum;byte 口 buf = apdu.getBuffer();short p2=( short )getUnsignedByte(bufISO7816.OFFSET_P2 );n=( short )(bufISO7816. OFFSET_P1 *256+p2);/ 取 p1,p2 轉(zhuǎn)化為一個(gè)數(shù).short強(qiáng)制轉(zhuǎn)換sum=( short )( Balance +n);if (n0 x00)if (sum=0 x00)Balance =( short )( Balance + n);buf0=(

19、byte )( Balance 8);buf1=(byte )( Balance &0 xff);apdu.setOutgoingAndSend(byte )0,( byte )2); else ISOException. throwIt ( short )0 x6102); else ISOException. throwIt ( short )0 x6101); 取款void credit(APDU apdu) / 消費(fèi) buf /這里 /if (! pin .isValidated()ISOException. throwIt ( SW_VERIFICATION_REQUIRED );

20、/ short m;byte 口 buf = apdu.getBuffer();short p2=( short )getUnsignedByte(bufISO7816.m=( short )(bufISO7816. OFFSET_P1 *256+p2);數(shù).short強(qiáng)制轉(zhuǎn)換OFFSET_P2 );/取1,p2轉(zhuǎn)化為一個(gè)if (m0)if ( Balance m)Balance =( short )( Balance -m);buf0=(byte )( Balance 8);buf1=(byte )( Balance &0 xff);apdu.setOutgoingAndSend(byte )0,( byte )2); else ISOException. throwIt ( short )0 x6104);elseISOException. throwIt ( short )0X6103); 獲取錢包余額public void getBalance(APDU apdu) byte buf = apdu.getBuffer();buf0=(byte )( Balance 8);buf1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論