【发布时间】:2019-05-30 13:17:28
【问题描述】:
我能够使用以下代码成功获取 HMAC SHA256:
public static String getHac(String dataUno, String keyUno) throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException {
SecretKey secretKey = null;
Mac mac = Mac.getInstance("HMACSHA256");
byte[] keyBytes = keyUno.getBytes("UTF-8");
secretKey = new SecretKeySpec(keyBytes,mac.getAlgorithm());
mac.init(secretKey);
byte[] text = dataUno.getBytes("UTF-8");
System.out.println("Hex encode: " + Hex.encode(keyUno.getBytes()));
byte[] encodedText = mac.doFinal(text);
return new String(Base64.encode(encodedText)).trim();
}
产生:
HMAC:9rH0svSCPHdbc6qUhco+nlkt2O7HE0rThV4M9Hbv5aY=
但是,我想得到这个:
HMAC:eVXBY4RZmFQcOHHZ5FMRjDLOJ8vCuVGTjy7cHN7pqfo=
我尝试了online tool,看来我的代码和在线工具之间的区别在于我正在处理密钥类型中的文本。
测试值:
字符串数据=“5515071604000faikwjtkeia:apa91bh_pb5xb2lrmkwust5xruj3jove-sb9kot0zxuupiefdhjii-codj-jmnjyy7hfjubirare9o2yacu43kafdmxklhjhe36dw0bz2vntdun_zd1ejbusycyiutmmkhfrvry3ib”;
字符串键 = "fc67bb2ee0648a72317dcc42f232fc24f3964a9ebac0dfab6cf47521e121dc6e";
getHac( “5515071604000fAIkwJtkeiA:APA91bH_Pb5xB2lrmKWUst5xRuJ3joVE-sb9KoT0zXZuupIEfdHjii-cODj-JMnjyy7hFJUbIRAre9o2yaCU43KaFDmxKlhJhE36Dw0bZ2VntDUn_Zd1EJBuSyCYiUtmmkHfRvRy3hIb”, “fc67bb2ee0648a72317dcc42f232fc24f3964a9ebac0dfab6cf47521e121dc6e”)); P>
执行我的方法返回
9rH0svSCPHdbc6qUhco+nlkt2O7HE0rThV4M9Hbv5aY= (在线返回与选择键类型文本相同的值)
我期待
eVXBY4RZmFQcOHHZ5FMRjDLOJ8vCuVGTjy7cHN7pqfo= (在线返回相同的值,键类型选择十六进制)
【问题讨论】:
标签: java encryption key sha256 hmacsha1