繁体   English   中英

通过MD5算法加密为Unicode(UCS-16)格式的32位字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM