2012-09-12 37 views
1

現在我需要CCHmac-sha256的幫助。當我在iOS和Java中消化純文本時,我得不到相同的輸出。請參考下面的代碼並指導我解決這個問題。Java MessageDigest vs iOS CCHmac-sha256

的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); 

回答

2

你的Java例子進行SHA-256散列,不HMAC。

您需要使用Mac而非MessageDigest的實例。

+0

是的正確,我需要一個sha-256散列只有不hmac .... – Murali

+0

@DuncanJones,你的鏈接的例子似乎已經消失。 – Rick

+0

@瑞克謝謝。我殺了鏈接。聽起來像OP需要無論如何看iOS代碼。 –