2011-10-21 7 views
2

AES暗号化に関連する問題があります。問題は、私は、初期化ベクトル、塩、RFC2898反復とsha1アルゴリズムを使用して鍵を生成するAES暗号化技術を使用して文字列を暗号化する必要があることです。 iPhoneでSHA1アルゴリズムを使用したIV、Salt、RFC2898反復、鍵生成を使用したAES暗号化

私はSHA1キー生成のために、このコード

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

// This is the destination 
uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0}; 
// This one function does an unkeyed SHA1 hash of your hash data 
CC_SHA1(keyData.bytes, keyData.length, digest); 

// Now convert to NSData structure to make it usable again 
NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH]; 
// description converts to hex but puts <> around it and spaces every 4 bytes 
NSString *hash = [out description]; 
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""]; 
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""]; 

NSLog(@"Hash is %@ for string %@", hash, str); 

return hash; 
} 

を使用しますが、それは、.NETとAndroidでこの技術と全く異なるん作り出します。

Androidと.netにはすでにこれを行うためのクラスとライブラリがあり、私はiPhoneでこれをどうすればできるのですか?

+0

見つけるか必要なものでなければなりませんか? – TheTiger

答えて

0

これは、あなたがこのためにあらゆるソリューションを

+ (NSData *)sha1HashFromString:(NSString *)stringToHash { 
    NSData *stringData = [stringToHash dataUsingEncoding:NSASCIIStringEncoding]; 
    uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0}; 
    CC_SHA1([stringData bytes], [stringData length], digest); 
    NSData *hashedData = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH]; 
    return [hashedData autorelease]; 
} 
関連する問題