亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? messcard.java

?? 關于食堂卡的重點難點分析關于食堂卡的重點難點分析關于食堂卡的重點難點分析關于食堂卡的重點難點分析
?? JAVA
字號:
Package MessCard;

import javacard.framework.*

public class MessCard extends Applet{
/*常量聲明*/

// MessCard應用支持的CLA
final static byte MessCard _CLA=(byte)0x80;

// MessCard應用支持的INS   Install指令
final static byte VERIFY=(byte)0x20;
final static byte CREDIT=(byte)0x30;
final static byte DEBIT=(byte)0x40;
final static byte GET_BALANCE=(byte)0x50;

//最大余額  0x7fff是十六進制要運算就要轉換為十進制它的十進制是32767
final static short MAX_BALANCE=0x7FFF;
//消費最大值
final static short MAX_TRANSACTION_AMOUNT=0x7F;

//PIN鎖定前語序的最大錯誤嘗試次數
final static byte PIN_TRY_LIMIT=(byte)0x03;
//PIN值的最大長度
final static byte MAX_PIN_SIZE=(byte)0x08;

/*MessCard應用返回的錯誤嗎*/
//表明PIN認證錯誤
final static short SW_VERIFICATION_FAILED=0x6300;
//表明在消費進行之前需要先進行PIN認證
final static short SW_PIN_VERIFICATION_REQUIRED=0x6301;
//表明消費額小于零或大于最大允許值
//amount>MAX_TRANSACTION_AMOUNT or amount<0
final static short SW_INVALID_TRANSACTION_AMOUNT=0x6A83;

//表明余額已超出最大允許值
final static short SW_EXCEED_MAXIMUM_BALANCE=0x6A84;
//表明余額為負值
Final static short SW_NEGATIVE_BALANCE=0x6A85;

/*實例化變量聲明*/
//食堂卡應用PIN值
OwnerPIN pin;
//食堂卡應用的余額
short balance;
private MessCard(byte[] bArray,short bOffset,byte bLength){
//MessCard應用構造函數,推薦將應用所需的所有變量,
//同意放到構造函數內進行分配,這樣將減少內存泄漏的可能

//以為定的參數創建OwnerPIN 對象實例PIN
pin=new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);

//計算install方法輸入參數在輸入數組中的偏移量
byte iLen=bArray[bOffset];//AID length
bOffset=(short)(bOffset+iLen+1);
byte cLen=bArray[bOffset];//info length
bOffset=(short)(bOffset+cLen+1);
byte aLen=bArray[bOffset];//applet data length

//去安裝參數作為食堂卡的初始PIN
pin.update(bArray,(short)(bOffset+1),aLen);
register();

}

public static void install(byte[] bArray,short bOffset,byte bLength){
   
   new MessCard(bArray,bOffset,bLength);
}

  public boolean select(){
  
    if(pin.getTriesRemaining()==0)
       
       return false;
   
}

public void deselect(){
   //當MessCard應用被取消選擇時,將PIN的狀態清空為初始值
    pin.reset(); 
}

public void process(APDU apdu){

  //APDU對象為JCRE臨時入口點對象,他可被任何應用所訪問,
  //負責傳遞終端發送的APDU命令。通過APDU.getBuffer()命令,
  //既可以得到APDU對象的通信緩沖區,即APDU命令數組
  byte[] buffer=apdu.getBuffer();

  //判斷命令頭是否正確
  buffer[ISO7816.OFFSET_CLA]=(byte)(buffer[ISO7816.OFFSET_CLA]&(byte)0xFC);

//若為SELECT命令,則直接返回,不做其他操作
if((buffer[ISO7816.OFFSET_CLA]==0)&&
(buffer[ISO7816.OFFSET_INS]==(byte)(0xA4)) )
   
return; 
//若為其他命令,則判斷命令CLA和INS是否能夠為MessCard應用所支持,
//若為支持范圍外的其他值,則返回對象的錯誤狀態字
if(buffer[ISO7816.OFFSET_CLA]!=MessCard_CLA)
   ISOExecption.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
Switch(buffer[ISO7816.OFFSET_INS]){
 
  case GET_BALANCE:
   getBalance(apdu);
retuen;

case DEBIT:
   debit(apdu);
   return;

case CREDIT:
credit(apdu);
return;

case VERIFY:
verify(apdu);
return;

default:
   ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
 
}

}

  private void credit(APDU apdu){
  
  //食堂卡應用鑒權
    if(!pin.is Validated())
    
      ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);

      byte[] buffer=apdu.getBuffer();

      //取命令LC,并將之存儲在numBytes中
         byte numBytes=buffer[ISO7816.OFFSET_LC];
      //接收APDU命令數據,并將之存儲到APDU通信緩沖區的
      //ISO7816.OFFSET_CDATA處,接著5字節的APDU命令頭
      byte byteRead=(byte)(apdu.setIncomingAndReceive());

      //判斷LC是否為1否則拋出異常,本應用只支持一個字節長度的存錢消費
      if((numBytes!=1)||(byteRead!=1))
       ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
       
       //取將存入的值
       byte creditAmount=buffer[ISO7816.FOFFSET_CDATA];
       
       //判斷消費額度是否滿足要求
       if((creditAmount)>MAX_TRANSACTION_AMOUNT)||(CREDITaMOUNT<0)
          )ISOException.throwIt(SW_INVALID_TRANSACTION_AMOUNT);

       //判斷若進行存錢消費,余額是否超出允許最大值
       if((short)(balance+creditAmount)>MAX_BALANCE)
         ISOException.throwIt(SW_EXCEED_MAXIMUM_BALANCE);
       //若以上條件滿足,則更新食堂卡余額
       blance=(short)(balance+creditAmount);

}
private void debit(APDU apdu){

   //食堂卡應用鑒權
   if(!pin.isValidated())
     ISOException.throwIt(SW_PIN_VERIFICATION_REQUIRED);

   byte [] buffer=apdu.getBuffer();
   byte numBytes=(byte)(buffer[ISO7816.OFFSET_LC]);
    byte byteRead=(byte)(apdu.setIncomingAndReceive());
    
    if((numBytes!=1)||(byteRead!=1))
       ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
    //取即將消費的值
    byte debitAmount=buffer[ISO7816.OFFSET_CDATA];
    
    //判斷消費消費額度是否滿足要求
    if((debitAmount>MAX_TRANSACTION_AMOUNT)||(debitAmount<0))
       ISOException.throwIt(SW_INVALID_TRANSACTION_AMOUNT);

    //判斷食堂卡余額是否大于消費的數額,即食堂卡是否透支
    if((short)(balance-debitAmount)<(short)0)
           ISOException.throwIt(SW_NEGATIVE_BALANCE);

    //若以上條件全部滿足,最后更改食堂卡余額
    balance=(short)(balance-debitAmount);


}

     private void getBalance(APDU apdu){

      byte[] buffer=apdu.getBuffer();

      //設置通信傳輸方向為卡片到終端,同時也表示卡片運行結束,
      //準備發送命令響應給終端,其中le為APDU命令中的LE,
      //表示終端要求卡片返回的響應數據的長度
      short le=apdu.setOutgoing();
    if(le<2)
       ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);

    //設置卡片發送數據的實際長度
    apdu.setOutgoingLength((byte)2);
    
    //復制余額數據島APDU緩存區中,準備發送給終端

    buffer[0]=(byte)(balance>>8);
     buffer[1]=(byte)(balance&0xFF);

     //調用通信函數發送余額數據
     apdu.sendBytes((short)0,(short)2);

}

       private void verify(APDU apdu){

           byte[] buffer=apdu.getBuffer();

           //接收終端發送的PIN數據,并將之存儲到APDU通信緩沖區中
           byte byteRead=(byte)(apdu.setIncomingAndReceive());

           //判斷數據終端數據的PIN是否和卡片內的PIN值相符
           if(pin.check(buffer,ISO7816.OFFSET_CDATA.byteRead)==false)
              ISOException.throwIt(SW_VERIFICATION_FAILED);

     
}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影在线免费观看| 欧美高清一级片在线| 同产精品九九九| 国产精品美女久久久久av爽李琼| 欧美性猛交xxxxxx富婆| 欧美男同性恋视频网站| 国产成人av电影| 美国三级日本三级久久99| 亚洲黄色性网站| 欧美激情在线观看视频免费| 91精品国产综合久久久久久久| 99久免费精品视频在线观看| 狠狠色丁香婷婷综合久久片| 天堂va蜜桃一区二区三区漫画版| 亚洲人成人一区二区在线观看 | 欧美国产一区二区在线观看| 欧美日韩国产成人在线免费| 91在线小视频| 国产精品18久久久久久vr| 午夜国产精品一区| 一区二区三区四区精品在线视频 | 亚洲精品乱码久久久久| 久久久精品免费网站| 精品毛片乱码1区2区3区| 欧美人与禽zozo性伦| 欧美三日本三级三级在线播放| 99久久精品免费看国产免费软件| 国产精品538一区二区在线| 蜜桃久久av一区| 蜜桃视频第一区免费观看| 日本午夜精品一区二区三区电影| 一区二区三区四区不卡在线| 亚洲裸体在线观看| 亚洲黄色录像片| 亚洲高清免费观看高清完整版在线观看| 亚洲免费在线电影| 亚洲精品免费一二三区| 亚洲综合在线第一页| 亚洲激情男女视频| 亚洲高清免费视频| 免费在线看一区| 久久99国产精品免费| 国产中文一区二区三区| 国产高清亚洲一区| 波多野结衣中文一区| 色综合欧美在线| 欧美日韩一区二区在线观看视频| 欧美日韩国产成人在线免费| 亚洲电影视频在线| 日日摸夜夜添夜夜添国产精品 | 天堂精品中文字幕在线| 爽爽淫人综合网网站| 经典一区二区三区| 高清不卡一区二区| 97久久精品人人做人人爽50路| 欧洲精品视频在线观看| 欧美精品777| 久久奇米777| 中文字幕在线不卡| 亚洲一区二区三区激情| 麻豆一区二区三| 国产精品911| 在线国产电影不卡| 欧美日韩精品三区| 久久综合久久综合久久| 亚洲欧洲成人av每日更新| 亚洲3atv精品一区二区三区| 精品一区中文字幕| 97se亚洲国产综合自在线观| 91黄色在线观看| 日韩三级在线免费观看| 中文字幕永久在线不卡| 亚洲成人黄色影院| 国产精品中文字幕日韩精品| 99久久国产免费看| 7777精品伊人久久久大香线蕉完整版 | 亚洲同性同志一二三专区| 视频在线在亚洲| 国产成人h网站| 欧美日韩极品在线观看一区| 日韩视频在线永久播放| 亚洲欧美日韩在线不卡| 久久99久久久久| 欧美激情一区二区在线| 亚洲午夜av在线| 粉嫩在线一区二区三区视频| 欧美美女直播网站| 亚洲国产精品传媒在线观看| 亚洲地区一二三色| 国产91精品久久久久久久网曝门| 欧美天堂一区二区三区| 久久久久久久一区| 性欧美疯狂xxxxbbbb| 成人黄色网址在线观看| 91精品国产综合久久久久久久 | 久久精品av麻豆的观看方式| av影院午夜一区| 精品国产一区二区三区av性色| 亚洲一区自拍偷拍| 成人av小说网| 久久久久久久久久久久久久久99| 午夜视频一区在线观看| 91精彩视频在线| 中文av一区特黄| 国内精品在线播放| 91.麻豆视频| 夜夜爽夜夜爽精品视频| 成人av电影在线播放| 久久久亚洲午夜电影| 日韩国产一二三区| 欧美性猛片aaaaaaa做受| 亚洲人成7777| 99精品视频一区二区三区| 久久久久亚洲蜜桃| 蜜臀久久99精品久久久久久9 | 波多野结衣视频一区| 久久九九全国免费| 狠狠狠色丁香婷婷综合激情| 欧美日韩一本到| 亚洲国产一区二区视频| 91麻豆福利精品推荐| 成人免费一区二区三区视频 | 亚洲综合久久av| 色婷婷一区二区三区四区| 国产精品美女久久久久久久| 成人动漫一区二区在线| 国产视频一区二区三区在线观看| 国内精品久久久久影院一蜜桃| 日韩一区二区三区在线| 日产欧产美韩系列久久99| 欧美一区二区三区四区久久| 日韩精品亚洲专区| 91精品国产91热久久久做人人 | 国产欧美日韩综合| 粉嫩一区二区三区性色av| 国产精品网友自拍| 国产91清纯白嫩初高中在线观看| 国产情人综合久久777777| 粉嫩av一区二区三区| 国产精品国产精品国产专区不蜜 | 国产精品一级片| 国产91富婆露脸刺激对白| 国产校园另类小说区| 成人深夜在线观看| 中文字幕永久在线不卡| 色综合久久综合| 午夜欧美在线一二页| 欧美不卡激情三级在线观看| 国产美女精品在线| 国产精品福利影院| 91久久人澡人人添人人爽欧美| 午夜电影一区二区三区| 精品福利在线导航| 91香蕉视频在线| 亚欧色一区w666天堂| 精品美女一区二区三区| 不卡av免费在线观看| 亚洲高清视频中文字幕| 欧美xxxxx牲另类人与| 成人美女视频在线看| 亚洲美女免费视频| 欧美日韩电影在线| 国产成人亚洲综合a∨婷婷| 亚洲美女视频一区| 日韩一区二区影院| 成人avav影音| 青青草97国产精品免费观看无弹窗版 | www..com久久爱| 午夜av区久久| 国产区在线观看成人精品| 欧美在线不卡视频| 激情伊人五月天久久综合| 成人一道本在线| 日韩在线观看一区二区| 欧美激情一区二区在线| 在线免费观看日本欧美| 裸体歌舞表演一区二区| 亚洲同性gay激情无套| 日韩欧美一二区| 99精品国产一区二区三区不卡| 日韩精品国产欧美| 亚洲欧洲在线观看av| 欧美电影免费观看高清完整版在线| eeuss鲁片一区二区三区在线看| 日韩精品欧美精品| 亚洲视频综合在线| 欧美r级电影在线观看| 色妹子一区二区| 国产一区福利在线| 亚洲高清免费观看高清完整版在线观看| 久久人人97超碰com| 欧美高清一级片在线| 99在线精品观看| 国模大尺度一区二区三区| 亚洲风情在线资源站| 136国产福利精品导航| 久久综合久色欧美综合狠狠| 欧美日韩亚洲国产综合| 99久久99久久精品免费看蜜桃| 另类欧美日韩国产在线|