Шифрование AES с использованием IV, Salt, итерации RFC2898, генерация ключей с использованием алгоритма SHA1 в iPhone

У меня проблема, связанная с шифрованием AES. Проблема в том, что мне нужно зашифровать строку с использованием метода шифрования AES с вектором инициализации, солью, итерацией RFC2898 и сгенерировать ключ с использованием алгоритма 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;
}

Для генерации ключа sha1, но он производит совершенно другое, чем этот метод в .net и Android.

В Android и .net уже есть классы и библиотеки для этого, и я остался один, так как я могу сделать это на iPhone.


person Soniya    schedule 21.10.2011    source источник
comment
Вы нашли какое-нибудь решение для этого?   -  person TheTiger    schedule 21.09.2017


Ответы (1)


Это должно быть то, что вам нужно

+ (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];
}
person Vlad    schedule 21.10.2011