快速业务通道

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
tagByte, int tagType, int tagNumber)    {     byte tempTagByte = (byte) (tagType + tagNumber);     if (tagByte == tempTagByte)       return true;     else       return false;    }//isASN1Structure

getNumberOfLengthBytes()

用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上)(4)

时间:2011-08-05 IBM Faheem Khan

清单 5 显示的 getNumberOfLengthBytes() 方法取一个参数( firstLengthByte )。 firstLengthByte 参数是 ASN.1 结构的第一个长度字节。getNumberOfLengthBytes() 方法处理第一个长 度字节,以计算 ASN.1 结构中长度字节的字节数。这是一个工具方法,ASN1DataTypes 类中的其他方法 在需要知道一个 ASN.1 结构的长度字节的字节数时就使用它。

清单 5 中的 getNumberOfLengthBytes() 方法的实现策略如下:

检查 firstLengthByte 的最高有效位(第 8 位)是否为零。清单 5 中的 if ( (firstLengthByte) & (1<<8)==0) 这一行完成这一任务。

如果最高有效位为零,那么长度字节就遵循 单字节 长度表示法。在 本系列的第 1 部分 我们说过有 两种长度表示法 ―― 单字节 和 多字节 。在 单字节 长度表示法中总是有一个长度字节。因此,如果 最高有效位为零,那么只需返回 1 作为长度字节的字节数。

如果 firstLengthByte 的最高有效位是 1,这意味着长度字节遵循 多字节 长度表示法。在这时,清 单 5 中的 else 块取得控制。

在 多字节 长度格式中,firstLengthByte 的最高有效位指定后面有多少长度字节。例如,如果 firstLengthByte 的值是 1000 0010 ,那么最左边的 1(最高有效位)说明后面的长度字节使用 多字节 长度表示法。其他 7 位( 000 0010 )说明还有两个长度字节。因此,在这里 getNumberOfLengthBytes() 方法应当返回 3( firstLengthBytes 加上另外两个长度字节)。

清单 5 中 else 块的第一行( firstLengthByte &= (byte)0x7f; )删除 firstLengthByte 的 最高有效位。

else 块中的第二行( return (int)firstLengthByte + 1; )将 firstLengthByte 强制转换为 integer ,在得到的 integer 值中加 1,并返回这个 integer 。

清单 5. getNumberOfLengthBytes() 方法

public int getNumberOfLengthBytes (byte firstLengthByte) {     if ( (firstLengthByte & 1<<8) == 0 )       return 1;     else {       firstLengthByte &= (byte)0x7f;       return (int)firstLengthByte + 1;     }    }//getNumberOfLengthBytes

getLength()

这个方法的目的是检查一个特定的 AS1 结构有多少个字节。处理应用程序通常有一个由多个 ASN.1 结构构成的嵌入层次所组成的字节数组。getLength() 方法计算特定结构中的字节数。

这个方法取两个参数。第一个参数( ASN1Structure )是一个字节数组,它应当包含至少一个完整的 ASN.1 结构,这个结构本身包含标签字节、长度字节和内容字节。第二个参数( offset )是一个在 ASN1Structure 字节数组中的偏移值。这个参数指定在 ASN1Structure 字节数组中包含的 ASN.1 结构的 开始位置。

getLength() 方法返回一个等于从 offset 字节处开始的 ASN.1 结构中的字节总数。

看一下 清单 6,它显示了 getLength() 方法的一个实现:

第一步是向 getNumberOfLengthBytes() 方法传 ASN.1 结构的第二个字节。这个 ASN.1 结构从 offset 字节开始,所以可以预计 offset 字节实际上就是标签字节。因为所有 Kerberos 结构只包含一 个标签字节,所以第二个字节(在 offset 字节后面的那个字节)是第一个长度字节。第

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号