如何根据NSString生成32位值?

时间:2014-11-07 09:14:21

标签: ios objective-c nsstring

我想为用户名生成32位值,并且对于相同的用户名,32位值应相同。

有人可以向我提供一些有关此事的信息吗?

提前致谢....

1 个答案:

答案 0 :(得分:1)

试试这个:

Source code here

第1步:导入这些头文件

#include <CommonCrypto/CommonCryptor.h>
#import <CommonCrypto/CommonKeyDerivation.h>

第2步:添加此方法

/Key generation using passcode and salt
+ (NSString *)generateKey:(NSString *)passcode
{

    NSData* myPassData = [passcode1 dataUsingEncoding:NSUTF8StringEncoding];
    NSData* salt = [@"sometext=" dataUsingEncoding:NSUTF8StringEncoding];

    unsigned char key[16];
    int result =   CCKeyDerivationPBKDF(kCCPBKDF2, myPassData.bytes, myPassData.length, salt.bytes, salt.length, kCCPRFHmacAlgSHA1, 1000, key, 16);

    // Hexa decimal or hash key string from hash key data.
    return([self hexStringWithData:key ofLength:8]);
}

+(NSString*) hexStringWithData: (unsigned char*) data ofLength: (NSUInteger) len
{
    NSMutableString *tmp = [NSMutableString string];
    for (NSUInteger i=0; i<len; i++)
        [tmp appendFormat:@"%02x", data[i]];
    return [NSString stringWithString:tmp];
}

第3步:获取盐

NSString *key = [self generateKey:@"sometext"];