用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上) - 编程入门网
= new byte[lengthOfStructure];
for (int x =0; x < lengthOfStructure; x++)
outputBytes[x]= inputByteArray [x + offset];
return outputBytes;
}
else
offset += getLength(inputByteArray, offset);
} while (offset < inputByteArray.length);
return null;
}//getASN1Structure
getContents() 用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上)(6)时间:2011-08-05 IBM Faheem Khan清单 8 中显示的 getContents() 方法取 ASN1Structure 字节数组并返回一个包含 ASN1Structure 内容的字节数组。 getContents() 方法假定所提供的字节数组是一个有效的 ASN1 结构,所以它忽略结构中表示标签字 节的第一个字节。它将第二个字节(即第一个长度字节)传递给 getNumberOfLengthBytes() 方法,这个 方法返回 ASN1Structure 输入字节数组中的长度字节数。 然后它构建一个名为 contentBytes 的新字节数组,并将 ASN1Structure 的内容拷贝到 contentBytes 数组中(去掉标签和长度字节)。 清单 8. getContents() 方法
一些低层加密支持方法 除了前面描述的低层处理方法,还需要一些低层加密支持方法以处理一个票据响应。这就是为什么在 解释票据响应的处理之前,我要讨论以下这些为 Kerberos 客户机提供加密支持的方法: encrypt() decrypt() getMD5DigestValue() decryptAndVerifyDigest() 这些方法是 KerberosClient 类的组成部分,可以在 KerberosClient.java 文件中找到它们,本文的 源代码下载中可以找到这个文件。下面是对这几个方法的说明: 用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(上)(7)时间:2011-08-05 IBM Faheem Khanencrypt() 清单 9 中显示的 encrypt() 方法处理低层加密并加密一个输入字节数组。 这个方法取三个字节数组参数,即一个用于加密的密码( keyBytes )、要加密的纯文本数据( plainData )和一个初始向量或者 IV( ivBytes )。它用密钥和 IV 加密纯文本数据,并返回加密后的 纯文本数据。 注意在 清单 9 中的 encrypt() 方法中,我使用了 DESEngine 、 CBCBlockCipher 、 KeyParameter 和 ParametersWithIV 类以加密这个纯文本数据。这些类属于在讨论 第二篇文章中的清单 11 中的 getFinalKey() 方法时介绍的 Bouncy Castle 加密库。回头看一下并比较 清单 9 中的 encrypt() 方法 与第二篇文章中 清单 11 中的 getFinalKey() 方法。注意以下几点: getFinalKey() 方法使用一个包装了初始向量的 ParametersWithIV 类。Kerberos 规范要求在生成加 密密钥时,用加密密钥作为 IV。因此,方法中的加密算法用加密密钥作为 IV。因此,getFinalKey() 方 法中的算法使用这个加密密钥作为一个 IV。 另一方面,encrypt() 方法设计为可以使用或者不使用 IV 值。更高级别的应用程序逻辑使用 encrypt() 方法时可以提供一个 IV 值或者忽略它。如果应用程序要求一个没有 IV 值的数据加密,那么 它将传递 null 作为第三个参数。 如 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |