2011-06-22 7 views
0

Objective-Cの同等のJava javax.cryptoライブラリですか?私はObjective-Cの(私はすでに働いて得たマイナスのBase64ビット)に相当するものをしたいと思っている、Javaで次のことをやってる

Mac mac = Mac.getInstance("HmacSHA1"); 
SecretKeySpec secret = new SecretKeySpec(PRIVATE_KEY.getBytes(),"HmacSHA1"); 
mac.init(secret); 
result = Base64.encodeToString(mac.doFinal(data), Base64.DEFAULT); 

は任意のObjective-Cのライブラリがあります私はそれを行うのを助けることができる?

* UPDATE *

ジャストアップデート - 私は、次のコードで実行を得たが、outがnullを出てくる:

NSData *keyData = [PRIVATE_KEY dataUsingEncoding:NSUTF8StringEncoding]; 
NSData *clearTextData = [data dataUsingEncoding:NSUTF8StringEncoding]; 

uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0}; 

CCHmacContext hmacContext; 
CCHmacInit(&hmacContext, kCCHmacAlgSHA1, keyData.bytes, keyData.length); 
CCHmacUpdate(&hmacContext, clearTextData.bytes, clearTextData.length); 
CCHmacFinal(&hmacContext, digest); 

NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH]; 

NSLog(@"encrypted data: %@", [NSString stringWithUTF8String:[out bytes]]); 

答えて

1

最近iPhoneでHMAC-SHA1を行った別のプロジェクトで作業しました。どうぞ!

秘密鍵は、secretKeyというNSStringにBase64でエンコードされています 署名する文字列はsignStringというNSStringにあります。既にNSDataがある場合は、clearTextDataではなくNSDataを使用してください。

出力シグネチャはbase64Encになります。エンコードしない場合は、単に「出力」になります。

NSData *keyData = [NSData dataWithBase64EncodedString:secretKey]; 
NSData *clearTextData = [signStr dataUsingEncoding:NSUTF8StringEncoding]; 

uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0}; 

CCHmacContext hmacContext; 
CCHmacInit(&hmacContext, kCCHmacAlgSHA1, keyData.bytes, keyData.length); 
CCHmacUpdate(&hmacContext, clearTextData.bytes, clearTextData.length); 
CCHmacFinal(&hmacContext, digest); 

NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH]; 
NSString *base64Enc = [out base64Encoding]; 
+0

outデータを返すときにnullになり、secretKeyとsignStrが有効かどうかを確認しました。私は私が得たもので答えを更新します。 – xil3

+0

# "CommonCrypto/CommonHMAC.h"をインポートしましたか?私はそれに言及するのを忘れていた。 –

+0

また、CCHmacFinalの後にブレークポイントを置き、digestの値を見てください。 uint8_t [20]であり、値はnil以外の値にする必要があります。 –

1

は、セクション3cc of the manualを見てください。これには、SHA1、HMAC、MD5などのさまざまな暗号関連アルゴリズムが含まれています。 Objective-Cコードと比べるとかなり低レベルですが、ポインタを知っている限り、かなり簡単です。

関連する問題