快速业务通道

Java智能卡基础篇 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
作的例子。这种OpenCard将迅速成为这个行业中的标准。

package java.commerce.MemoryCards; import java.io.IOException; import java.commerce.smartcards.*; import java.commerce.gemplus.*; public class CardStrings { /** * Write a String, since the card is modulo 8 and we are * not using serialized objects -- the first two bytes are the * length followed by six spare bytes. Strings longer than 4096 - 48 * bits will be truncated. */ public static void writeGFMString(String s , ISOCardReader isoreader) { ISOCommand wcmd; ISOCardinputStream winput; int upper,lower; short length = (short)s.length(); // Length of the input string System.out.println("Length is " + length ); try { // Write the control section out wcmd = new ISOCommand(0, 0xd0, 0, 0, 8,0); // Save the length wcmd.data.writeShort( length ); System.out.println("Write out the Length"); winput = wcmd.execute(isoreader, new GemplusReaderFailureHandler()); // Write the String out int wholeAmount = length/8; // Groups of 8 int remainder = length % 8; // Remainder // Write the String out groups of 8 for ( int l = 1; l <= wholeAmount; l++ ) { System.out.println("Writing 8 bytes at " + (l*8)); upper="(l" * 8 )>> 8; lower = ( l * 8 ) & 0xff; wcmd = new ISOCommand(0, 0xd0, upper, lower, 8,0); int index = ( (l-1) * 8 ); wcmd.data.writeString(s.substring(index),8); System.out.println("Write out bytes at " + index); winput = wcmd.execute(isoreader, new GemplusReaderFailureHandler()); } // Write the remainder out upper = ((wholeAmount+1) * 8 ) >> 8; lower = ((wholeAmount+1) * 8 ) & 0xff; wcmd = new ISOCommand(0, 0xd0, upper, lower, remainder,0); int index = ( wholeAmount * 8 ); wcmd.data.writeString(s.substring(index),remainder); winput = wcmd.execute(isoreader, new GemplusReaderFailureHandler()); } catch ( Exception e ) { System.out.println( "Exception " + e); e.printStackTrace(); } } /** * Read a String, since the card is modulo 8 and we are * not using serialized objects -- the first two bytes are the * length followed by six spare bytes. Strings longer than 4096 - 48 * bits will be truncated. */ public static String readGFMString(ISOCardReader isoreader ) { ISOCommand rcmd; ISOCardinputStream rinput; int upper,lower; short length; StringBuffer sb = new StringBuffer(); try { // Read the control section rcmd = new ISOCommand(0, 0xb0, 0, 0, 0, 8); // Read the length rinput = rcmd.execute(isoreader,new GemplusReaderFailureHandler()); length = (short)rinput.readShort(); System.out.println("The length is: " + length); // Read the String int wholeAmount = length/8; // Groups of 8 int remainder = length % 8; // Remainder // Read the String in groups of 8 for ( int l = 1; l <= wholeAmount; l++ ) { System.out.println("Reading 8 bytes at " + (l*8)); upper="(l" * 8 )>> 8; lower = ( l * 8 ) & 0xff; rcmd = new ISOCommand(0, 0xb0, upper, lower, 0, 8); rinput = rcmd.execute(isoreader,new GemplusReade

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号