Java 加密过程中有一段代码看不明白希望高手指点 15

publicstaticStringhmacSign(StringaValue,StringaKey){bytek_ipad[]=newbyte[64];bytek_op... public static String hmacSign(String aValue, String aKey) {
byte k_ipad[] = new byte[64];
byte k_opad[] = new byte[64];
byte keyb[];
byte value[];
try {
keyb = aKey.getBytes(encodingCharset);
value = aValue.getBytes(encodingCharset);
} catch (UnsupportedEncodingException e) {
keyb = aKey.getBytes();
value = aValue.getBytes();
}

Arrays.fill(k_ipad, keyb.length, 64, (byte) 54);
Arrays.fill(k_opad, keyb.length, 64, (byte) 92);
for (int i = 0; i < keyb.length; i++) {
k_ipad[i] = (byte) (keyb[i] ^ 0x36);
k_opad[i] = (byte) (keyb[i] ^ 0x5c);
}

MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {

return null;
}
md.update(k_ipad);
md.update(value);
byte dg[] = md.digest();
md.reset();
md.update(k_opad);
md.update(dg, 0, 16);
dg = md.digest();
return toHex(dg);
}

public static String toHex(byte input[]) {
if (input == null)
return null;
StringBuffer output = new StringBuffer(input.length * 2);
for (int i = 0; i < input.length; i++) {
int current = input[i] & 0xff;
if (current < 16)
output.append("0");
output.append(Integer.toString(current, 16));
}

return output.toString();
}

其中 md.update(k_ipad);
md.update(value);
byte dg[] = md.digest();
md.reset();
md.update(k_opad);
md.update(dg, 0, 16);
dg = md.digest();
md .update()次 作用是什么! 在线等 810734500
md.update(k_ipad);
md.update(value);
2次调用update()后 dg[]得到的值是什么?
展开
 我来答
valibo
2009-03-11 · TA获得超过377个赞
知道小有建树答主
回答量:595
采纳率:0%
帮助的人:504万
展开全部
MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。

update方法属于MessageDigest

你可以看一下 这里的api 文档

http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/security/MessageDigest.html

参考资料: http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/security/MessageDigest.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冷得很哟
2009-03-14 · TA获得超过402个赞
知道答主
回答量:326
采纳率:0%
帮助的人:107万
展开全部
4444444444444444444444444444444444444444444444444444444444444444
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式