我想使用SHA256生成密鑰並進行N次迭代。iphone中的SHA256密鑰生成器
他們輸入應該是我「密碼」 + 「隨機數」
我已經看到由蘋果提供的加密採樣但似乎它並沒有提供我的要求(或者可能是我可能沒有得到它正確)。
我已經通過下面的鏈接,以及,但不必須使用方法SHA256 http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html
等待一些提示生成密鑰。
問候
我想使用SHA256生成密鑰並進行N次迭代。iphone中的SHA256密鑰生成器
他們輸入應該是我「密碼」 + 「隨機數」
我已經看到由蘋果提供的加密採樣但似乎它並沒有提供我的要求(或者可能是我可能沒有得到它正確)。
我已經通過下面的鏈接,以及,但不必須使用方法SHA256 http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html
等待一些提示生成密鑰。
問候
This discussion蘋果論壇應該幫助你
試試這個,它爲我工作
1)爲了得到一個散列平面文字輸入
-(NSString*)sha256HashFor:(NSString*)input
{
const char* str = [input UTF8String];
unsigned char result[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(str, strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
for(int i = 0; i<CC_SHA256_DIGEST_LENGTH; i++)
{
[ret appendFormat:@"%02x",result[i]];
}
return ret;
}
2 )獲取NSData的散列作爲輸入
注意 - 我用NSData的類別,因此代碼如下
- (NSString *)SHA256_HASH {
if (!self) return nil;
unsigned char hash[CC_SHA256_DIGEST_LENGTH];
if (CC_SHA256([(NSData*)self bytes], [(NSData*)self length], hash)) {
NSData *sha2 = [NSData dataWithBytes:hash length:CC_SHA256_DIGEST_LENGTH];
// description converts to hex but puts <> around it and spaces every 4 bytes
NSString *hash = [sha2 description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
// hash is now a string with just the 40char hash value in it
//NSLog(@"hash = %@",hash);
// Format SHA256 fingerprint like
// 00:00:00:00:00:00:00:00:00
int keyLength=[hash length];
NSString *formattedKey = @"";
for (int i=0; i<keyLength; i+=2) {
NSString *substr=[hash substringWithRange:NSMakeRange(i, 2)];
if (i!=keyLength-2)
substr=[substr stringByAppendingString:@":"];
formattedKey = [formattedKey stringByAppendingString:substr];
}
return formattedKey;
}
return nil;
}