2012-09-12 1 views
1

이제 CCHmac-sha256에서 도움이 필요합니다. iOS 및 Java에서 일반 텍스트를 처리 할 때 동일한 출력을 얻지 못합니다. 아래 코드를 참조하고이 문제를 해결하도록 안내해주십시오.Java MessageDigest 대 iOS CCHmac-sha256

아이폰 OS 코드

CCHmac(kCCHmacAlgSHA256,cKey,strlen(cKey),cData,strlen(cData),cHMAC); 
NSData *hashedPassword2 = 
    [NSData dataWithBytes:cHMAC length:CC_SHA256_DIGEST_LENGTH]; 

내가 base32 문자열

자바 코드

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

자바 예제하는 SHA-256 해시를하지 수행을이있는 NSData로 변환하고 HMAC.

Mac이 아닌 MessageDigest의 인스턴스를 사용해야합니다.

+0

맞습니다. hmac가 아닌 sha-256 해시가 필요합니다 .... – Murali

+0

@DuncanJones, 연결된 예제가 사라진 것처럼 보입니다. – Rick

+0

@Rick Thanks. 나는 그 링크를 죽였다. 어쨌든 iOS 코드를 보는 데 필요한 OP와 비슷합니다. –