我们当前使用Java中的以下代码对特定字符串进行哈希处理
private String getSignedRequest(String key, String data) {
try {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256a");
sha256_HMAC.init(secret_key);
return Base64.encodeToString(sha256_HMAC.doFinal(data.getBytes("UTF-8")), Base64.NO_WRAP);
} catch (Exception e) {
return "";
}
}
需要将这段代码移到c(以避免将秘密密钥返回给java并将其保留在本机层中)代码,然后才能由java类使用JNI进行访问。
C ++标准库不包含HMAC或Sha,因此在使用Android时如何在c / c ++中实现此功能。
感谢您的帮助。