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

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

 2010-03-30 00:00:00 来源:WEB开发网   
核心提示: 检查 firstLengthByte 的最高有效位(第 8 位)是否为零, 清单 5 中的 if ( (firstLengthByte)& (1<<8)==0) 这一行完成这一任务,用 Kerberos 为 J2ME 应用程序上锁,第 3 部分: 建立与电子银行的安全通信(上)(6)

检查 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 

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

Tags:Kerberos JME 应用程序

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