Java MessageDigest与iOS CCHmac-sha256

时间:2012-09-12 07:38:37

标签: java ios cryptography

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

1 个答案:

答案 0 :(得分:2)

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

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