用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(下) - 编程入门网
nFounder = concatenateBytes (getRandomNumber(), getRandomNumber ());
/****** Step 2: ******/
byte[] zeroedChecksum = new byte[16];
/****** Step 3: ******/
byte[] paddedDataBytes = concatenateBytes (conFounder,
concatenateBytes(zeroedChecksum,
getPaddedData(data)
)
);
/****** Step 4: ******/
byte[] checksumBytes = getMD5DigestValue(paddedDataBytes);
/****** Step 5: ******/
for (int i=8; i < 24; i++)
paddedDataBytes[i] = checksumBytes[i-8];
/****** Step 6: ******/
byte[] encryptedData = encrypt(key, paddedDataBytes, null);
/****** Step 7: ******/
byte[] etype = getTagAndLengthBytes(
ASN1DataTypes.CONTEXT_SPECIFIC,
0, getIntegerBytes(3)
);
/****** Step 8: ******/
byte[] cipher = getTagAndLengthBytes(
ASN1DataTypes.CONTEXT_SPECIFIC,
2, getOctetStringBytes(encryptedData)
);
/****** Step 9: ******/
byte[] ASN1_encryptedData = getSequenceBytes (
concatenateBytes(etype,cipher)
);
return ASN1_encryptedData;
}//authorDigestAndEncrypt
用Kerberos为J2ME应用程序上锁,第3部分 - 建立与电子银行的安全通信(下)(3)时间:2011-08-05 IBM Faheem Khan清单 16. getPaddedData() 方法
getChecksumBytes() getChecksumBytes() 方法生成一个称为 Checksum 的结构,如 清单 17 所示。Checksum 结构包含两 个字段: cksumtype 和 checksum。 清单 17. Checksum 结构
有两个地方需要 Checksum 结构 ―― 第一个是生成服务票据响应时,然后是生成安全上下文建立请 求时。Checksum 结构的作用在这两种情况下是不同的,需要在生成服务票据和上下文建立请求时说明 (elaborate)。 清单 18 所示的 getChecksumBytes() 方法取两个字节数组参数。第一个参数带有 checksum 字段, 而第二个参数带有 cksumtype 字段。 getChecksumBytes() 方法将 cksumtype 字段包装到一个特定于上下文的标签号 0(它表示 cksumtype 字段,如 清单 17 所示),而将 checksum 字段包装到一个特定于上下文的标签号 1(它表 示 checksum 字段,同样如 清单 17 所示)。然后它链接这两个字段,将这个数组包装到一个 SEQUENCE 中,并返回这个 SEQUENCE。 清单 18. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |