2011-12-29 3 views
8

私はこれは私が変換する必要があること、Javaのコードで客観C.Objective MessageDigestとJavaで同等のCですか?

にJavaコードを変換する作業を取っている:

private String getHash(String input) 
{ 
    String ret = null; 
    try 
    { 
     MessageDigest md = MessageDigest.getInstance("SHA-256"); 

     byte[] bs = md.digest(input.getBytes("US-ASCII")); 


     StringBuffer sb = new StringBuffer(); 
     for (byte b : bs) 
     { 
      String bt = Integer.toHexString(b & 0xff); 
      if(bt.length()==1) 
      { 
       sb.append("0"); 
      } 
      sb.append(bt); 
     } 
     ret = sb.toString(); 
    } 
    catch (Exception e) 
    { 
    } 
    return ret; 
} 

具体的には、私が持っているのObjective Cで何を使用することができますMessageDigest classと同じ機能ですか?

答えて

0

OpenSSLライブラリが必要です。例については、generate sha256 with openssl and C++の回答を参照してください(タイトルはC++ですが、OpenSSLは基本的なCライブラリです)。

2

私は、stackoverflow.comでSHA-256をサポートするリンゴフレームワークを見つけました。 THXのstackoverflowの:)

CommonCrypto/CommonDigest.h

と私は、この機能を使用することができることを実現:

CC_SHA256(const void *data, CC_LONG len, unsigned char *md) 

CC_SHA256_Final(unsigned char *md, CC_SHA256_CTX *c) 

CC_SHA256_Init(CC_SHA256_CTX *c) 

CC_SHA256_Update(CC_SHA256_CTX *c, const void *data, CC_LONG len) 

だから私は、このJavaコードを除いて、私の仕事に行くことができます。

byte[] bs = md.digest(input.getBytes("US-ASCII")); 

と私は以下のJava CircularコードのObjective C式を知りたいと思いますか?

for (byte b : bs) 

PS:チャック、本当にありがとうございます。ありがとうございました。このような:)

3

何か:

#import <CommonCrypto/CommonDigest.h> 

+(NSString*) sha256:(NSString *)input 
{ 
    const char *s=[input cStringUsingEncoding:NSASCIIStringEncoding]; 
    NSData *keyData=[NSData dataWithBytes:s length:strlen(s)]; 

    uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0}; 
    CC_SHA256(keyData.bytes, keyData.length, digest); 
    NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH]; 
    NSString *hash=[out description]; 
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""]; 
    return hash; 
} 
関連する問題