【发布时间】:2016-07-18 22:50:45
【问题描述】:
我需要一个 hmac-sha256 编码 2 个字符串的函数。我找到了这段代码,但我的 Eclipse 编译器一直说“无法解析十六进制”。
public static String encode(String key, String data) throws Exception {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
sha256_HMAC.init(secret_key);
return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
}
我也试过这个:得到错误“Base64 无法解析”。
public static String encode(String key, String data) throws Exception {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
sha256_HMAC.init(secret_key);
return Base64.encodeBase64String(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
}
我的进口是:
import java.security.MessageDigest;
import java.util.Random;
import java.lang.Object;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
我正在使用 JRE 系统库 (JavaSE-1.7)。 我的问题是如何修复这些错误代码?
【问题讨论】:
-
Java 1.7 不再支持。使用 1.8 编写安全代码。
标签: java eclipse hex base64 sha256