作业帮 > JAVA > 教育资讯

JavaME安全策略(四):使用无接触通信创建安全应用[1]

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 16:25:51 JAVA
JavaME安全策略(四):使用无接触通信创建安全应用[1]
JavaME安全策略(四):使用无接触通信创建安全应用[1]JAVA
【51Test.Net - JAVA】
无接触通信(包括RFID标签和条码等近距离通信方式)正逐渐成为移动市场的重要部分。借助对无接触通信的适当支持,你可以创建多种类型的应用程序,比如swipe-to-purchase(使用移动电话作为移动钱包)、移动购买(扫描条码并进行远程购买)或比较购物(扫描条码以了解一个产品的更多信息,比如比较价格)。JSR 257定义了无接触通信API,这是一组可选的包,它提供了对RFID标签(也称为近程标签)和条码(也称为可视标签)的支持。
无接触通信API提供了5个包,其中1个是任何API实现都必须拥有的。
qjavax.microedition.contactless:始终存在,提供用于发现邻近地区的近距离设备的类。
qjavax.microedition.contactless.ndef:如果支持与支持NFC数据交换格式(NDEF)的智能卡通信,则提供该包。
qjavax.microedition.contactless.rf:如果支持与一般的RFID卡通信,则提供该包。
qjavax.microedition.contactless.sc:如果支持与满足ISO 144443近程标准的RFID卡通信,则提供该包。
qjavax.microedition.contactless.visual:如果API实现支持条码识别和显示,则提供该类。
这些包需要设备上存在CLDC 1.1或更高版本,或存在来自其他Java配置的类似支持。
无接触通信设备具有丰富的种类,但是所有种类都给予某种无线协议,这种无线协议通常以RFID标签为基础构建。无接触通信API目前支持以下无接触设备类型。
qNDEF兼容设备:通过交换用于处理各个NDEFRecord对象的NDEFMessage对象进行通信。
qISO 144443兼容设备:通过一个Connection子类进行通信,该类允许交换表示为字节数组形式的APDU。
q通用RFID标签:与这类设备的通信通过一个Connection子类进行,该类允许交换命令矢量。
不是所有无接触通信API实现都支持这些选项。
当使用无接触通信API时,应用程序通常执行一个或多个以下操作。
q当无接触目标可用时注册通知:可以使用MIDP推注册(参见第14章,了解如何使用MIDP推注册)或API提供的javax.microedition.contactless.DiscoveryManager类实现。
q使用无接触连接API提供的合适的Connection子类与无接触通信设备通信:当设备进入无接触范围内时(由一个MIDP推注册或来自DiscoveryManager的一个事件报告)即可执行此操作。
q如果需要可视标签识别,使用MMAPI捕获图像:关于如何操作的详细信息,参阅第16章。将捕获的图像传递给一个VisualTagConnection实例以供识别。
q如果用户需要可是标签识别,创建一个要被编码为条码的字节流,并将字节传递给一个VisualTagConnection以生成一个图像:生成图像之后,将其提供给用户。
一、发现无接触目标
无接触通信带来了一个挑战,因为应用程序不知道何时将碰到一个可与其通信的目标。应用程序可能需要始终监听一个目标(用于确认销售支付的应用程序或安全识别机制中使用的应用程序通常属于这一类),或者可能只在应用程序处于活动状态时监听一个目标,比如当用户创建要发送给目标的消息时。
要始终监听一个无接触目标,应用程序只需使用MIDP推注册对此事件进行注册。当启用了NDEF的目标或无接触目标靠近Java ME设备时,API提供推通知(push notification)。要在发生此事件时注册推通知,需要构造一个URI来指定应用程序寻找的NDEF记录的类型,并将此URI放置在JAD文件中名为MIDlet-Push-n的字段中。
URI能够指定,当Java ME设备发现一个包含指定的MIME编码数据或指定的记录类型的目标时,应用程序是否应该启动。无论处于哪种情况,推注册URI都以协议ndef开头,然后是MIME类型声明或记录类型声明,比如:
只要Java ME设备遇到一个启用了NDEF且带有一个URI的目标,这个推注册URI就会启动应用程序(也即,一个MIME类型为text/x-uri的数据块)。下面是另一个示例:
在此示例中,URI的前两个字段(urn和ufc)表明该记录是一个NDEF记录,而wkt指明了该字段的命名空间。最后,Sp表明寻找的目标是一个Smart Poster。
如果应用程序使用推注册接收近程目标的通知,它应该还会实现javax.microedition. coJAVA