我想为用户名生成32位值,并且对于相同的用户名,32位值应相同。
有人可以向我提供一些有关此事的信息吗?
提前致谢....
答案 0 :(得分:1)
试试这个:
第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"];