Java卡电子钱包实验报告(共25页).docx
《Java卡电子钱包实验报告(共25页).docx》由会员分享,可在线阅读,更多相关《Java卡电子钱包实验报告(共25页).docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上Java卡电子钱包实验报告需求分析可以应用于现实中的Java卡电子钱包需要有电子钱包的安装、选择与撤销选择、存款、借款、获取钱包余额以及身份验证。等功能。定义4条命令,分别为校验PIN、加钱、减钱和读余额。其中,加钱、减钱和读余额都是对钱包余额的操作.PIN的引入增加了钱包应用的安全性,Wallet应用要求在进行交易(加钱或减钱)之前,必须进行PIN校验,只有PIN校验成功后,才能对余额数据进行修改。同时在取消选择应用时,重载了 deselect方法将PIN的校验结果清空,从而要求在每次选择应用后都需进行PIN验证,避免了安全漏洞的产生。系统结构图安装public s
2、tatic 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()ISOException.throwIt(SW_VERIFICATION_
3、REQUIRED);/short n,sum;byte buf = apdu.getBuffer(); short p2=(short)getUnsignedByte(bufISO7816.OFFSET_P2);n=(short)(bufISO7816.OFFSET_P1*256+p2);/取p1,p2转化为一个数.short强制转换sum=(short)(Balance+n);if(n0x00)if(sum=0x00)Balance=(short)(Balance + n);buf0=(byte)(Balance8);buf1=(byte)(Balance&0xff);apdu.setOut
4、goingAndSend(byte)0,(byte)2);elseISOException.throwIt(short)0x6102);else ISOException.throwIt(short)0x6101); 取款void credit(APDU apdu)/消费buf /这里/if(!pin.isValidated()ISOException.throwIt(SW_VERIFICATION_REQUIRED);/short m;byte buf = apdu.getBuffer(); short p2=(short)getUnsignedByte(bufISO7816.OFFSET_
5、P2);m=(short)(bufISO7816.OFFSET_P1*256+p2);/取1,p2转化为一个数.short强制转换if(m0)if(Balance m)Balance=(short)(Balance-m);buf0=(byte)(Balance8);buf1=(byte)(Balance&0xff);apdu.setOutgoingAndSend(byte)0,(byte)2);elseISOException.throwIt(short)0x6104); elseISOException.throwIt(short)0X6103);获取钱包余额public void getB
6、alance(APDU apdu)byte buf = apdu.getBuffer(); buf0=(byte)(Balance8);buf1=(byte)(Balance&0xff);apdu.setOutgoingAndSend(byte)0,(byte)2);身份验证private void verify(APDU apdu)byte buffer=apdu.getBuffer();byte byteRead =(byte)(apdu.setIncomingAndReceive();if(pin.check(buffer,ISO7816.OFFSET_CDATA,byteRead)=f
7、alse)ISOException.throwIt(SW_VERIFICATION_FAILED);Process方法public void process(APDU apdu)if ( selectingApplet()return; byte buf = apdu.getBuffer();switch(bufISO7816.OFFSET_INS) case (byte) DEBIT:debit(apdu);break;case (byte) CREDIT:credit(apdu);break;case (byte) GET_BALANCE:getBalance(apdu);break;/c
8、ase (byte) VERIFY:verify(apdu);break;/default:ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); APDU发送Name CLA INS P1P2 Lc Data Field Le (size of response) 返回选择 00a4.9000DEBIT 00 0x01 钱数 00 成功9000 失败6101 6102CREDIT 000x02 钱数 00 成功9000 失败6104 6103VERIFY 00 0x03 00 00 03 密码成功9000 未经验证进行其他操作0x6301密码错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 电子 钱包 实验 报告 25
限制150内