首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cocoa中,如何显式地使用UTF-7对CC_MD5中使用的字符串进行编码?

在Cocoa中,如何显式地使用UTF-7对CC_MD5中使用的字符串进行编码?
EN

Stack Overflow用户
提问于 2011-12-05 14:43:11
回答 1查看 228关注 0票数 0

大家好,最亲爱的社区:

我遇到了创建字符串的精确MD5的问题。它必须与PHP和C#中的MD5匹配。读到这个:PHP MD5 not the same as .NET MD5,我想我必须首先使用UTF7编码来转换字符串。但目前我只知道NSString只支持UTF-8。这是我从字符串创建MD5的代码:

代码语言:javascript
复制
-(NSString *) md5:(NSString *) str 
{
    const char *cStr = [str UTF8String];
    unsigned char result[16];
    CC_MD5( cStr, strlen(cStr), result );
    return [NSString stringWithFormat:
        @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
        result[0], result[1], result[2], result[3], 
        result[4], result[5], result[6], result[7],
        result[8], result[9], result[10], result[11],
        result[12], result[13], result[14], result[15]
        ]; 
}

所以,如果我没弄错的话,在[str UTF8String]这行,我必须把它改成[str UTF7String]。我说的对吗?如果是这样的话,Cocoa会有这个功能吗?目前我的谷歌搜索并没有给出好的结果。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-05 15:22:37

你链接的帖子是绝对不正确的。MD5算法在字节块上工作,它不知道这些字节代表什么。

您所要做的就是确保字符串在PHP、C#和Cocoa中以相同的方式编码。只需使用UTF-8即可。如果这样做,表示字符串的字节的MD5散列将是相同的。

如果您在所有平台上都使用UTF8,并且散列是不同的,那么可能存在将数据提供给MD5算法的方式或算法本身的实现方面的问题。Mac上的CC_MD5函数应该被认为是正确的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8381836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档