现在我需要CCHmac-sha256中的帮助。当我在iOS和Java中消化纯文本时,没有得到相同的输出。请参考以下代码,并指导我解决此问题。

iOS代码

CCHmac(kCCHmacAlgSHA256,cKey,strlen(cKey),cData,strlen(cData),cHMAC);
NSData *hashedPassword2 =
    [NSData dataWithBytes:cHMAC length:CC_SHA256_DIGEST_LENGTH];

我正在将此nsdata转换为base32字符串

Java代码
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(s1.getBytes());
byte[] h = md.digest();
Base32 base32 = new Base32();
String base32_h = replaceIllegalCharacters(base32.encodeAsString(h));
System.out.println("\n"+base32_h+"\n");
String cc1 = base32_h.substring(0, 4);

最佳答案

您的Java示例正在执行SHA-256哈希,而不是HMAC。

您需要使用Mac的实例,而不是MessageDigest的实例。

10-07 22:31