Discuss / Java / 为什么是这个数组?

为什么是这个数组?

Topic source

狠美味2013

#1 Created at ... [Delete] [Delete and Lock User]

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 };

LawBreak

#2 Created at ... [Delete] [Delete and Lock User]

我觉得这里只是为了表达一种思路与特定数组无关:

在获取key并加密文本存储下来后,key.encode()转成byte[]进行存储

然后验证的时候从存储的byte[](例子里直接写了一个)复原出原来的key,然后进行验证。

(因为我发现这个数组转16进制输出长度和key.encode()的输出长度是一样的)

你打印

System.out.println(Arrays.toString(skey));
就知道了

G周首

#4 Created at ... [Delete] [Delete and Lock User]

我的打印了,每次得到的数组都不一样?随机的数组吗?

--Kevin啊

#5 Created at ... [Delete] [Delete and Lock User]

这个数组就相当于第一个例子中key.getEncoded()中获取的数组,然后通过new SecretKeySpec(hkey, "HmacMD5"),得到SecretKey key,相当于第一个例子中keyGen.generateKey()

我觉得这个数组只是举了一个例子去验证HmacMD5, 把已知数组用 SecretKeySpec对象恢复成SecretKey后,这个加密算法可以运行。它和第一个例子里的随机生成的 key没有关系,每运行一次第一个例子,生成的 key(或者 encoding得到的数组)都不同,因此最终输出的哈希也不一样,从结果上无法比较。如果非要比较的话,可以打印两个例子的 key 、byte[]和 result,长度分别相同,但是打印内容不同。

江舟独行

#7 Created at ... [Delete] [Delete and Lock User]

此数组应该就是所谓的加盐,或者称为事先约定的加密密钥,加密和验证过程中都需要用到这个密钥,不知这样理解是否正确?


  • 1

Reply