WEB开发网
开发学院软件开发Java 用 Kerberos 为 J2ME 应用程序上锁,第 2 部分: 生... 阅读

用 Kerberos 为 J2ME 应用程序上锁,第 2 部分: 生成一个 Kerberos 票据请求

 2010-03-30 00:00:00 来源:WEB开发网   
核心提示: 因此,在多字节格式中所需要的字节数取决于长度值,用 Kerberos 为 J2ME 应用程序上锁,第 2 部分: 生成一个 Kerberos 票据请求(5),这就是为什么在 getLengthBytes() 的 else 块的 do - while 循环中要计算长度字节所需要的字节数, 确定所需

因此,在多字节格式中所需要的字节数取决于长度值。这就是为什么在 getLengthBytes() 的 else 块的 do - while 循环中要计算长度字节所需要的字节数。

确定所需要字节数的方法很简单。我声明了一个名为 bytesRequired 的字节计数器,从 2 开始计数(所需要的最少字节数),将长度值除以 256,并检查商是否大于或者等于 1。如果是,那么就表明原始长度值大于 256,因而需要至少 3 个字节,所以我增加计数器( bytesRequired )。

我继续将长度值除以 256 并增加字节计数器,直到除得的值小于 1。这时,我就知道找到了在多字节整数格式中需要的字节数。

知道了所需要的字节数后,我就实例化一个具有适当大小的字节数组。自然,长度字节中的第一个字节将表明还有多少个长度字节。因此,我只是将所需要的字节数减 1( bytesRequired-1 ),并拷贝到一个名为 firstLengthByte 的字节中。

看一下清单 2 中 getLengthBytes() 方法中的 firstLengthByte |= 0x80 这一行代码。这一行代码对 firstLengthByte 和 0x80 ( 1000 0000 )进行按拉 OR 操作,并将结果储存到 firstLengthByte 中。这种逻辑 OR 操作会将 firstLengthByte 的最左边(最高有效)位设置为 1。回想在本系列 第一篇文章 中的讨论,在希望使用多字节整数格式的时候,必须将第一个长度字节的最左边一位设置为 1。

下一行( lengthBytes[0]=firstLengthByte )只是拷贝在包含长度字节的数组的开始位置上的 firstLengthByte 。然后,有一个 for 循环,它将长度字节从长度参数中拷贝到在 lengthBytes 数组中它们的正确位置上。当 for 循环退出时,就得到了符合 ASN.1 格式的这个 lengthBytes 数组。清单 2 中 getLengthBytes() 方法的最后一行返回这个数组。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Kerberos JME 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接