用Kerberos为J2ME应用程序上锁,第3部分

得到一个服务票据

已经处理了 TGT 响应并提取了 TGT 和会话密钥。现在可以使用这个 TGT 和会话密钥向 KDC 服务器 请求一个服务票据。对服务票据的请求类似于对我在清单 1 中生成的对 TGT 的请求。我在 TGT 请求中 省略的可选 padata 字段在服务票据请求中不再是可选的了。因此,需要在服务票据请求中加上 padata 字段。

padata 字段是包含两个字段 ―― padata-type 和 padata-value ―― 的 SEQUENCE。padata-value 字段带有几种类型的数据,因此相应的 padata-type 字段指定了 padata-value 字段所带的数据的类型 。

在 本系列的第一篇文章的图 5 中我介绍了服务票据中的 padata 字段的结构。在那里说过服务票据 请求中的 padata 字段包装了一个认证头(一个 KRB_AP_REQ 结构),它又包装了 TGT 以及其他数据。

所以,在可以开始生成票据请求之前,必须生成一个认证头。下面是分析了生成认证头的过程。

生成一个认证头

我在 KerberosClient 类中加入了以下方法以生成一个认证头:

getMD5DigestValue()

getChceksumBytes()

authorDigestAndEncrypt()

getAuthenticationHeader()

这四个方法都是 helper 方法。第五个方法( getAuthenticationHeader() )使用 helper 方法并生 成认证头。

authorDigestAndEncrypt()

清单 15 显示的 authorDigestAndEncrypt() 方法取一个纯文本数据字节数组和一个加密密钥。这个 方法对纯文本数据计算一个摘要值、加密纯文本数据、并返回一个 EncryptedData 结构,这个结构与我 作为输入传递给 清单 12 的 decryptAndVerifyDigest() 方法的结构完全匹配。

可以说 清单 15 的 authorDigestAndEncrypt() 方法与前面讨论的 decryptAndVerifyDigest() 方法 正好相反。authorDigestAndEncrypt() 方法取 decryptAndVerifyDigest() 方法返回的纯文本数据作为 输入。与此类似, authorDigestAndEncrypt() 方法返回的 EncryptedData 结构就是我作为输入传递给 decryptAndVerifyDigest() 方法的结构。

authorDigestAndEncrypt() 方法实现了以下策略:

首先,生成八个随机字节,它们构成了 confounder。

然后,声明一个名为 zeroedChecksum 的字节数组,它有十六个字节并初始化为零。这个有十六个零 的数组作为一个全为零的摘要值。

第三,用其他的字节填入输入数据字节数组,以使数组中的字节数成为八的倍感数。编写了一个名为 getPaddedData() 的方法(如 清单 16所示),它取一个字节数组并在填充后返回这个数组。下面,链接 (第 1 步得到的)confounder、(第 2 步得到的)全为零的摘要以及填充后的纯文本字节数组。

时间: 2024-09-10 04:27:22

用Kerberos为J2ME应用程序上锁,第3部分的相关文章

用Kerberos为J2ME应用程序上锁,第2部分

简介: 在本系列的上一篇文章中,您看到了对可以安全地连接到支持 Kerveros 的服务器的 J2ME 应 用程序的描述,还可了解在字节水平上 Kerberos 加密的细节问题.本文则深入到应用程序自身内部.您 将看到如何使用 J2ME 的工具程序以及一些开放源代码库完成异常强大的加密任务. 在本系列的 上一篇文章 中,我介绍了一个使用 Kerberos 与电子银行服务器进行安全通信的移动银 行 MIDlet 应用程序.我还解释了基于 J2ME 的 Kerveros 客户机应用程序与远程服务器交

用Kerberos为J2ME应用程序上锁,第1部分

简介: 用户需要确保所使用的无线应用程序不会损害他们的敏感信息.其中一种方法就是使用行业标 准协议如 Kerberos 来提供安全性.在本系列中,Faheem Khan 将创建一个示例 J2ME MIDlet,它使用 Kerberos 来保护财务数据.本文是该系列的第一篇文章,他通过解释为他的应用程序的安全性提供骨架 的 Kerberos 数据格式,介绍了一些基本知识. 许多用户不愿意使用通过无线连接发送敏感数据的应用程序,因为他们不信任无线安全性.但是使传 统有线网络上的电子商务的安全成为可能

基于MVC模式的J2ME应用程序框架设计

1 J2ME应用程序框架的现状 Sun公司在1999年6月推出了J2ME(Java 2 MicroEdition,Java 2袖珍版).J2ME是专门为那些使用有限电源.有限网络连接以及有限图形用户界面能力的设备开发的,满足了消费电子和嵌入式设备开发的需要. 而7年后的今天,消费电子和嵌入式设备发展迅速.硬件设备速度越来越快,存储容量也越来越大,这也就自然带动了软件的发展.MIDP 2.0和CLDC 1.1也相继问世,各种各样的JSR也层出不穷. 硬件平台和软件平台的飞速发展自然带动了人们需求的

J2ME手机程序开发中的九大注意要点

程序 一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识: 1.Java语法基础:包括基本数据类型.关键字.运算符等等 2.面向对象的思想:类和对象的概念,继承和多态等等. 3.异常处理 4.多线程 J2ME中没有用到的Java基础

在J2ME手机程序开发中使用颜色

程序 在J2ME手机开发过程中,需要经常用到颜色来进行绘制,增强程序的表现效果,下面就介绍一下如何使用颜色.       由于J2ME技术比较简单,所以没有实现专门的颜色类,而只是使用RGB的概念来代表颜色.这里简单介绍一下RGB的概念,颜色是由红(Red).绿(Green).蓝(Blue)三原色组成的,所以可以使用这三个颜色的组合来代表一种具体的颜色,其中R.G.B的每个数值都位于0-255之间.在表达颜色的时候,即可以使用三个数字来表达,也可以使用一个格式如0X00RRGGBB这样格式的十六

J2ME中程序优化的十个小方法

j2me程序由于其特殊的运行环境限制,所以优化就显得比较重要,以下是在学习j2me编程所收集的一些技巧和自己的心得. 本文主要是说明j2me平台上的特殊优化方法,与j2se重复的一些技巧就不再赘述了. 1.显示图象时确定好你的fps,最好先做几次小实验,这样能让你在显示效果和运行速度上有比较好的平衡. 2.GamaCanvas.getGraphics()每次都会产生一个全新的对象,但是对这些对象的操作都是对同一个graphics,所以还是只取一次供后面使用. 3.让多个对象使用同样的监听器,比如

j2me网络程序中移动资费页面的处理

自中国移动启动上网资费页面提醒后,导致了很多的J2ME联网出现了联不上服务器的问题.即在j2me程序中启动联网后,在有些地区,有些时候,移动网关会把我们的请求截下,返还一个资费提醒的页面给我们,这样我们的服务器将不会收到我们的请求,导致程序出现联网失败的错误. 因此我们在处理网络连接时要加入对移动资费页面的处理,我们可以在发送网络请求后,对返回的response进行http头的检测,如果我们检测到返回的content-type是text/vnd.wap.wml,我们可以扔掉这个response,

j2me 实习程序员

问题描述 苏州有没有手机游戏公司招人,我可以免费给他们做联系qq:961195870 解决方案 解决方案二:这个办法不错,,,,,,,,,,,,,解决方案三:www.51job.comshenghuo.g.cn解决方案四:祝福解决方案五:祝福..解决方案六:祝愿找到个好单位....解决方案七:祝福你....解决方案八:呵呵~~解决方案九:找到了工作,我免费为你做!

教您如何使用EclipseME开发J2ME程序(3)

2 开发 J2ME项目 要创建一个 J2ME 应用程序,回到"File"菜单,选择"New"项,并在子菜单中选择"Other".然后执行以下步骤: (1). 进入"J2ME"选项,选择"J2ME Midlet"并单击"Next"(参见图9). (2). 填上应用程序名,其他设置采用默认设置,并单击"Finish"(参见图10),完成应用程序创建. 图 9. 创建 J2