2011-12-29 10 views
8

मैं उद्देश्य के लिए जावा कोड परिवर्तित सीउद्देश्य सी जावा में MessageDigest के बराबर है?

एक काम ले रहा हूँ यह जावा में कोड मैं कन्वर्ट करने के लिए है कि है:

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; 
} 

विशेष रूप से, मैं उद्देश्य सी में क्या उपयोग कर सकते हैं जो है MessageDigest class के समान कार्यक्षमता?

उत्तर

0

आप ओपनएसएसएल लाइब्रेरी चाहते हैं। उदाहरण के लिए generate sha256 with openssl and 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) 

तो मैं इस जावा कोड को छोड़कर मेरे काम पर जा सकते हैं।

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

और मैं जानना चाहता हूं कि जावा सर्कुलर कोड की कोई उद्देश्य सी अभिव्यक्ति नीचे है?

for (byte b : bs) 

पीएस: चक, मैं आपकी मदद के लिए वास्तव में सराहना करता हूं। धन्यवाद। :)

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; 
} 
संबंधित मुद्दे