为什么是这个数组?
Topic source我觉得这里只是为了表达一种思路与特定数组无关:
在获取key并加密文本存储下来后,key.encode()转成byte[]进行存储
然后验证的时候从存储的byte[](例子里直接写了一个)复原出原来的key,然后进行验证。
(因为我发现这个数组转16进制输出长度和key.encode()的输出长度是一样的)
这个数组就相当于第一个例子中key.getEncoded()中获取的数组,然后通过new SecretKeySpec(hkey, "HmacMD5"),得到SecretKey key,相当于第一个例子中keyGen.generateKey()
我觉得这个数组只是举了一个例子去验证HmacMD5, 把已知数组用 SecretKeySpec对象恢复成SecretKey后,这个加密算法可以运行。它和第一个例子里的随机生成的 key没有关系,每运行一次第一个例子,生成的 key(或者 encoding得到的数组)都不同,因此最终输出的哈希也不一样,从结果上无法比较。如果非要比较的话,可以打印两个例子的 key 、byte[]和 result,长度分别相同,但是打印内容不同。
- 1
狠美味2013
byte[] hkey = new byte[] { 106, 70, -110, 125, 39, -20, 52, 56, 85, 9, -19, -72, 52, -53, 52, -45, -6, 119, -63,
30, 20, -83, -28, 77, 98, 109, -32, -76, 121, -106, 0, -74, -107, -114, -45, 104, -104, -8, 2, 121, 6,
97, -18, -13, -63, -30, -125, -103, -80, -46, 113, -14, 68, 32, -46, 101, -116, -104, -81, -108, 122,
89, -106, -109 };