用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上) - 编程入门网
一个长度字节说 明长度字节的总字节数,getNumberOfLengthBytes() 方法返回长度字节数。int numberOfLengthBytes = getNumberOfLengthBytes(ASN1Structure [offset+1]); 这一行执行这项任务 。
如果 getNumberOfLengthBytes() 方法返回一个大于 1 的值,那么必须处理 多字节 长度表示法。在 这种情况下,将从 offset + 2 (让过标签字节和第一个长度字节) 开始的长度字节读到一个名为 lengthValueAsBytes 的变量中。然后用 getIntegerValue() 方法将长度值从 ASN.1 字节转换为 J2ME int 。最后,将结果加 1(以补偿不包含在长度值中的标签字节),再将长度值返回给调用应用程序。 如果 getNumberOfLengthBytes() 方法返回 1,则要处理 单字节 长度表示法。在这种情况下,只要 将第一个(也是惟一的一个)长度字节转换为 J2ME int ,对它加 1(以补偿不包含在长度值中的标签字 节),并将得到的值返回给调用应用程序。 用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上)(5)时间:2011-08-05 IBM Faheem Khan清单 6 getLength() 方法
getASN1Structure 清单 7 中的 getASN1Structure() 方法从一个包含一系列 ASN.1 结构的字节数组中找出并提取特定 ASN.1 结构。这个方法有三个参数。第一个参数( inputByteArray )是输入字节数组,需要从这个字节 数组中找到所需要的 ASN.1 结构。第二个参数是一个 int ,它指定要查找的标签的类型。第三个参数指 定标签号。 看一下 清单 7 中的 getASN1Strucute() 方法实现。它将 offset 值初始化为零并进入 do-while 循 环。 在 do-while 循环中,将字节数组中第一个字节读入名为 tagByte 的字节中。然后用 isASN1Structure() 方法检查输入数组的第一个字节是否是所需要的 ASN.1 结构。 如果第一个字节代表所需要的结构,那么就用 getLength() 方法找到要返回的所需数量的字节。然后 将所需要的字节拷贝到名为 outputBytes 的字节数组中、并将这些字节返回到调用应用程序。 如果第一个字节不代表所需要的结构,那么就要跳到下一个结构。为此,将 offset 值设置为下一个 结构的开始位置。 do-while 循环在下一个循环中检查下一个结构,并以此方式检查整个输入数组。如果没有找到所需要 的结构,那么 do-while 循环就会退出并返回 null。 清单 7. getASN1Structure() 方法
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |