[英]Encryption into a 32-bit string in Unicode (UCS-16) format by MD5 algorithm
我有以下代码以UTF-8格式生成MD5哈希:
const char* str = [clearPassword UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(str, strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
[ret appendFormat:@"%02x",result[i]];
}
return ret;
但是我的需求需要有32位Unicode哈希。
可以说字符串是“ admin”。 使用我的代码,我将得到“ 21232f297a57a5a743894a0e4a801fc3”,这是错误的。
我使用了一些在线生成器来获取unicode哈希,然后得到了“ 19a2854144b63a8f7617a6f225019b12”,这正是我想要的。
我的代码的哪一部分需要更改?
尝试这个:
NSData *utf16data = [clearPassword dataUsingEncoding:NSUTF16LittleEndianStringEncoding];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5([utf16data bytes], [utf16data length], result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
[ret appendFormat:@"%02x",result[i]];
}
return ret;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.