在Objective-C和C#中的MD5

4

我有一个用C#编写的方法来获取MD5:

    public static string encryptPasswordWithMd5(string password)
    {
        MD5 md5Hasher = MD5.Create();
        byte[] data = md5Hasher.ComputeHash(Encoding.Unicode.GetBytes(password));
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < data.Length; i++)
            sb.Append(data[i].ToString("x2"));

        return sb.ToString();
    }

现在我需要使用Objective-C实现相同的功能,该怎么做?
PS:我已经使用了这里提供的方法http://discussions.apple.com/thread.jspa?threadID=1509152&tstart=96 Objective-C代码如下:
-(NSString *) encryptPasswordWithMd5: (NSString *) _password{
const char * cStr = [_password cStringUsingEncoding: NSUTF16LittleEndianStringEncoding];

unsigned char result[CC_MD5_DIGEST_LENGTH];

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]

        ];

但它们得到的结果不同。以'admin'为例,C#是"19a2854144b63a8f7617a6f225019b12",而Objective-C是"0CC175B9C0F1B6A831C399E269772661"。

1个回答

1

请查看这个链接(最新帖子)。它展示了如何在Objective-C中计算MD5哈希。

顺便说一句:你也可以简化C#中的MD5计算。

public static string encryptPasswordWithMd5(string password)
{
    var md5 = new MD5CryptoServiceProvider();
    var originalBytes = ASCIIEncoding.Default.GetBytes(password);
    var encodedBytes = md5.ComputeHash(originalBytes);
    return BitConverter.ToString(encodedBytes);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接