1

现在我需要 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);
4

1 回答 1

2

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

您需要使用Macnot的实例MessageDigest

于 2012-09-12T08:01:06.230 回答