C中的Hmac Sha256,并在JNI中公开结果

时间:2019-06-24 22:41:14

标签: android c java-native-interface sha256 hmac

我们当前使用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 ++中实现此功能。

感谢您的帮助。

0 个答案:

没有答案