一种java应用访问智能密钥装置的方法

文档序号:6385753阅读:146来源:国知局
专利名称:一种java应用访问智能密钥装置的方法
技术领域
本发明涉及信息安全领域,尤其涉及一种java应用访问智能密钥装置的方法。
背景技术
智能密钥装置是一种USB接口设备,它采用双因子认证模式,使用方便、成本较低。它内置单片机或智能密钥装置芯片,可以存储用户密钥或数字证书,利用智能密钥装置内的密文算法可以实现对用户身份的认证,智能密钥装置具有电子邮件加密、数字签名、安全证书、安全网络登录和访问SSL安全网络等功能,具有保证用户的私钥永远不离开硬件的特征,并且还具有物理上防攻击的特征,安全性极高。Java应用程序虽然能够直接访问智能密钥装置,但是由于java语言的特性,很容易通过反编译来获取源代码,访问安全性低,存在安全隐患。

发明内容
本发明的目的是为了克服现有技术的不足,提供了一种java应用访问智能密钥装置的方法。本发明采用的技术方案是:一种java应用访问智能密钥装置的方法,包括:步骤101 JNI接口获取JNI接口函数被调用时的源参数列表;步骤102:根据预设JNI接口函数与下层接口函数的对应表,确定与JNI接口函数对应的下层接口函数;步骤103:根据所述下层接口函数确定目标参数列表;步骤104:根据下层接口的目标参数列表,将所述源参数列表的值传递给相应的下层接口参数;步骤105:调用所述下层接口,访问智能密钥装置,得到返回结果;步骤106:将所述得到的返回结果返回给调用方或抛出异常,结束。所述步骤102中,所述预设JNI接口函数与下层接口函数的对应表中包括多个——对应的接口函数对,其中每个接口函数对中包含一个JNI接口函数与一个与所述JNI接口函数对应的下层接口函数,当JNI接口函数被调用时,根据所述预设JNI接口函数与下层接口函数的对应表查找到对应的下层接口函数。所述步骤104中:如果下层接口需要的类型是预定义简单类型,则:根据下层接口需要的预定义简单类型,根据源参数列表中的预定义本地类型的参数,查询第一预设映射表,获取所述第一预设映射表中包含所述预定义本地类型的参数的类型对,得到与所述预定义本地类型对应的下层接口函数需要的预定义简单类型,通过强制类型转换,得到下层接口需要的参数。所述步骤104中:如果下层接口函数需要的类型是预定义复合类型,则:
根据下层接口需要的预定义复合类型,根据源参数列表中的预定义引用类型的参数,查询第二预设映射表,获取所述第二预设映射表中包含所述预定义引用类型的参数类的型对,得到与所述预定义引用类型对应的下层接口函数需要的预定义复合类型。所述步骤104具体包括:步骤104-1:获取所述源参数列表中所述预定义引用类型的参数的长度,并根据参数长度分配第一缓冲区;步骤104-2:将所述源参数列表中所述预定义引用类型的参数转存至所述第一缓冲区中;步骤104-3:在所述下层接口中为转存后的数据分配第二缓冲区;步骤104-4:将所述转存后的数据存入所述第二缓冲区中。所述步骤106具体包括:步骤106_1:判断所述返回结果是否正确,如果是,则执彳丁步骤106_2,否则抛出异
常,结束;步骤106-2:将所述返回结果的值返回给调用方。所述步骤106-1具体为:判断下层结果的返回结果是否是预定义的“成功”,如果是,则表示返回结果正确,执行步骤106-2,否则表示返回结果错误,抛出异常,结束。所述抛出异常具体包括:A:根据源参数列表中的参数,获取调用方异常类;B:根据源参数列表中的参数,实例化调用方异常;C:根据源参数列表中的参数,为调用方抛出异常。所述步骤106中将所述得到的返回结果返回给调用方,具体包括:S1:获取调用方的类;S2:创建所述类的实例;S3:将所述下层接口返回的内容传给所述类的实例;S4:将所述创建的类的实例返回给调用方。所述步骤S3包括:步骤S3-1:获取预定的成员变量在存储所述类的实例的缓冲区的首地址;步骤S3-2:根据所述下层接口返回内容的预定的成员变量的类型与调用方的结构的成员变量类型,将下层接口返回内容的类型转换成为JNI接口类型;步骤S3-3:将转换后的内容传递给所述类的实例。所述步骤106中将所述的得到的返回结果返回给调用方,具体包括:如果所述下层接口返回内容的类型是预定义简单类型,则根据所述第一预设映射表,将所述预定义简单类型的参数,通过强制类型转换得到JNI接口类型,然后将得到的JNI接口类型的值返回给调用方;如果所述下层接口返回内容的类型是预定义复合类型,则根据所述第二预设映射表,将所述预定义引用类型的参数转换为JNI接口类型,然后将得到的JNI接口类型的值返回给调用方。如果下层接口的返回内容的类型是预定义复合类型,根据所述第二预设映射表,将所述预定义引用类型的参数转换为JNI接口类型,然后将得到的JNI接口类型的值返回给调用方,具体包括:步骤B1:获取所述下层接口的返回内容的长度,并根据所述长度分配第三缓冲区;步骤B2:将所述下层接口的返回内容转存至所述第三缓冲区中;步骤B3:在JNI接口中为转存后的数据分配第四缓冲区;步骤B4:将所述转存后的数据存入所述第四缓冲区中。


图1为本发明实施例1提供了一种java应用访问智能密钥装置的方法流程图;图2为本发明实施例2提供了一种java应用访问智能密钥装置的方法流程图;图3为本发明实施例3提供了一种java应用访问智能密钥装置的方法流程图;图4为本发明实施例4提供了一种java应用访问智能密钥装置的方法流程图;图5为本发明实施例5提供了一种java应用访问智能密钥装置的方法流程图;图6为本发明实施例6提供了一种java应用访问智能密钥装置的方法流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例1本发明的实施例1提供了一种java应用访问智能密钥装置的方法,如图1所示,包括:步骤101 JNI接口获取JNI接口函数被调用时的源参数列表;步骤102:根据预设JNI接口函数与下层接口函数的对应表,确定与JNI接口函数对应的下层接口函数;在本实施例中,所述下层接口是预定义的PKCS#11接口 ;步骤103:根据所述下层接口函数确定目标参数列表;步骤104:判断JNI接口函数的源参数列表中的参数是否是预定义本地类型,如果是,则执行步骤105,否则执行步骤106 ;在本实施例中,所述预定义本地类型包括:jbyte、jchar、jboolean、jint、jlong等;步骤105:根据下层接口需要的参数类型,查询第一预设映射表,将JNI接口函数的源参数列表中预定义本地类型的参数,,通过强制类型转换,得到下层接口函数的目标参数列表需要的预定义简单类型的参数,执行步骤107 ;所述第一预设映射表为:
权利要求
1.种java应用访问智能密钥装置的方法,其特征在于,包括: 步骤101 JNI接口获取JNI接口函数被调用时的源参数列表; 步骤102:根据预设JNI接口函数与下层接口函数的对应表,确定与JNI接口函数对应的下层接口函数; 步骤103:根据所述下层接口函数确定目标参数列表; 步骤104:根据下层接口的目标参数列表,将所述源参数列表的值传递给相应的下层接口参数; 步骤105:调用所述下层接口,访问智能密钥装置,得到返回结果; 步骤106:将所述得到的返回结果返回给调用方或抛出异常,结束。
2.据权利要求1所述的方法,其特征在于, 所述步骤102中,所述预设JNI接口函数与下层接口函数的对应表中包括多个一一对应的接口函数对,其中每个接口函数对中包含一个JNI接口函数与一个与所述JNI接口函数对应的下层接口函数,当JNI接口函数被调用时,根据所述预设JNI接口函数与下层接口函数的对应表查找到对应的下层接口函数。
3.据权利要求1所述的方法,其特征在于, 所述步骤104中: 如果下层接口需要的类型是预定义简单类型,则: 根据下层接口需要的预定义简单类型,根据源参数列表中的预定义本地类型的参数,查询第一预设映射表,获取所述第一预设映射表中包含所述预定义本地类型的参数的类型对,得到与所述预定义本地类型对应的下层接口函数需要的预定义简单类型,通过强制类型转换,得到下层接口需要的参数。
4.据权利要求1所述的方法,其特征在于, 所述步骤104中: 如果下层接口函数需要的类型是复合类型,则: 根据下层接口需要的预定义复合类型,根据源参数列表中的预定义引用类型的参数,查询第二预设映射表,获取所述第二预设映射表中包含所述预定义引用类型的参数类的型对,得到与所述预定义引用类型对应的下层接口函数需要的预定义复合类型。
5.据权利要求4所述的方法,其特征在于, 所述步骤104具体包括: 步骤104-1:获取所述源参数列表中所述预定义引用类型的参数的长度,并根据参数长度分配第一缓冲区; 步骤104-2:将所述源参数列表中所述预定义引用类型的参数转存至所述第一缓冲区中; 步骤104-3:在所述下层接口中为转存后的数据分配第二缓冲区; 步骤104-4:将所述转存后的数据存入所述第二缓冲区中。
6.据权利要求1所述的方法,其特征在于, 所述步骤106具体包括: 步骤106-1:判断所述返回结果是否正确,如果是,则执行步骤106-2,否则抛出异常,结束;步骤106-2:将所述返回结果的值返回给调用方。
7.据权利要求6所述的方法,其特征在于, 所述步骤106-1具体为: 判断下层结果的返回结果是否是预定义的“成功”,如果是,则表示返回结果正确,执行步骤106-2,否则表示返回结果错误,抛出异常,结束。
8.据权利要求1或6或7中任意一项所述的方法,其特征在于, 所述抛出异常具体包括: A:根据源参数列表中的参数,获取调用方异常类; B:根据源参数列表中的参数,实例化调用方异常; C:根据源参数列表中的参数,为调用方抛出异常。
9.据权利要求1所述的方法,其特征在于, 所述步骤106中将所述得到的返回结果返回给调用方,具体包括: 51:获取调用方的类; 52:创建所述类的实例; 53:将所述下层接口返回的内容传给所述类的实例; 54:将所述创建的类的实例返回给调用方。
10.据权利要求9所述的方法,其特征在于, 所述步骤S3包括: 步骤S3-1:获取预定的成员变量在存储所述类的实例的缓冲区的首地址; 步骤S3-2:根据所述下层接口返回内容的预定的成员变量的类型与调用方的结构的成员变量类型,将下层接口返回内容的类型转换成为JNI接口类型; 步骤S3-3:将转换后的内容传递给所述类的实例。
11.据权利要求1所述的方法,其特征在于, 所述步骤106中将所述的得到的返回结果返回给调用方,具体包括: 如果所述下层接口返回内容的类型是预定义简单类型,则根据所述第一预设映射表,将所述预定义简单类型的参数,通过强制类型转换得到JNI接口类型,然后将得到的JNI接口类型的值返回给调用方; 如果所述下层接口返回内容的类型是预定义复合类型,则根据所述第二预设映射表,将所述预定义引用类型的参数转换为JNI接口类型,然后将得到的JNI接口类型的值返回给调用方。
12.据权利要求11所述的方法,其特征在于, 如果下层接口的返回内容的类型是预定义复合类型,根据所述第二预设映射表,将所述预定义引用类型的参数转换为JNI接口类型,然后将得到的JNI接口类型的值返回给调用方,具体包括: 步骤B1:获取所述下层接口的返回内容的长度,并根据所述长度分配第三缓冲区; 步骤B2:将所述下层接口的返回内容转存至所述第三缓冲区中; 步骤B3:在JNI接口中为转存后的数据分配第四缓冲区; 步骤B4:将所述转存后的数据存入所述第四缓冲区中。
全文摘要
本发明公开了一种java应用访问智能密钥装置的方法,属于信息安全领域。所述方法包括java应用调用JNI接口,根据JNI接口函数与下层接口函数的对应表,获取对应的下层接口函数,根据下层接口函数的目标参数列表,将JNI接口函数的源参数列表转换为对应的下层接口函数的目标参数列表,调用下层接口,访问智能密钥装置,得到返回结果,再将返回结果的值返回给java应用。采用本发明的技术方案能够使java应用不容易被反编译获取源码,提高了java应用访问智能密钥装置的安全性。
文档编号G06F21/34GK103093136SQ201210580998
公开日2013年5月8日 申请日期2012年12月27日 优先权日2012年12月27日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1