Java MessageDigest Vs iOS CCHmac-sha256

Java MessageDigest Vs iOS CCHmac-sha256,java,ios,cryptography,Java,Ios,Cryptography,现在我需要CCHmac-sha256的帮助。当我在iOS和Java中消化纯文本时,我没有得到相同的输出。请参考以下代码并指导我解决此问题 iOS代码 MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(s1.getBytes()); byte[] h = md.digest(); Base32 base32 = new Base32(); String base32_h = repl

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

iOS代码

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);
CCHmac(kCCHmacAlgSHA256、cKey、strlen(cKey)、cData、strlen(cData)、cHMAC);
NSData*哈希密码2=
[NSData DATA WITH字节:cHMAC长度:CC_SHA256_摘要_长度];
我正在将此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

@DuncanJones,您的链接示例似乎已经消失了。@Rick谢谢。我已经切断了连接。听起来OP需要查看iOS代码。