简介: 在本系列的上一篇文章中,您看到了对可以安全地连接到支持 Kerveros 的服务器的 J2ME 应 用程序的描述,还可了解在字节水平上 Kerberos 加密的细节问题。本文则深入到应用程序自身内部。您 将看到如何使用 J2ME 的工具程序以及一些开放源代码库完成异常强大的加密任务。
在本系列的 上一篇文章 中,我介绍了一个使用 Kerberos 与电子银行服务器进行安全通信的移动银 行 MIDlet 应用程序。我还解释了基于 J2ME 的 Kerveros 客户机应用程序与远程服务器交换 Kerberos 票据和密钥时所交换的数据格式和消息序列。
在本文中,我将开始实现生成并处理这些消息的 J2ME 类。我将首先简单描述构成这个基于 J2ME 的 Kerveros 客户机的主要类的作用,然后我将解释并展示这些类如何生成在第一篇文章中讨论过的基本 ASN.1 数据类型。在第三节中,我将展示如何生成一个用于在 Kerveros 通信中进行加密和解密的密钥。 最后一节将展示 J2ME 客户机如何生成对 Kerveros 票据的请求。
基于 J2ME 的 Kerveros 客户机中的类
在本文中,将要讨论三个 J2ME 类的操作:
ASN1DataTypes
KerberosClient
KerberosKey
ASN1DataTypes
类将包装所有一般性的 ASN.1 功能,如发布像 INTEGER 和 STRING 这 样的通用数据类型。 KerberosClient 类扩展 ASN1DataTypes 类,使用它的底层功能,并提供所有特定 于 Kerveros 的功能。因此,可以说我将所需要的功能简单地分为两组:所有一般性的 ASN.1 功能都在 ASN1DataTypes 类中,而所有特定于 Kerveros 的功能都在 KerberosClient 类中。这提高了代码的重用 性。如果您希望构建自己的、使用 ASN.1 功能的非 Kerveros 应用程序,那么您可以使用 ASN1DataTypes 类。
Kerberos 定义了一种利用用户的密码生成密钥的算法。 KerberosKey 类实现了这种算法 。在 Kerveros 通信中您将需要这个密钥。
我将在本文分别展示这些类中的每个方法。我还在一个单独的 源代码下载中加入了这些类。这个包将 所有东西放到一组类中,可以将它们编译为一个 J2ME 项目。这个下载包含以下文件:
ReadMe.txt ,它包含描述如何根据本文的需要练习这些代码的指导。
ASN1DataTypes.java ,它实现了 ASN1DataTypes 类。
KerberosClient.java ,它实现了 KerberosClient 类。
KerberosKey.java ,它实现了 KerberosKey 类。
J2MEClientMIDlet.java ,它提供了可以用来测试这些代码的一个非常简单的 MIDlet 包装器。
现在,我将进一步探讨这些类的细节。