现在我需要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
的实例。