c# - Object-C 和 C# 中的 MD5

标签 c# objective-c md5

我有一个用 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

objc中的代码是

-(NSString *) encryptPasswordWithMd5: (NSString *) _密码 {
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”,但objc为“0CC175B9C0F1B6A831C399E269772661”;

最佳答案

检查 this links (最后一个帖子)。它展示了如何在 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);
}

关于c# - Object-C 和 C# 中的 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987831/

相关文章:

MySQL 哈希值作为列名

c# - 告诉 Resharper lambda 参数不为空

c# - 在 C# WPF 中为 MVVM 数据绑定(bind)定义属性的简洁方法

c# - 如何在 C# 中包装具有未知数量和类型的参数的 Func<T1...Tn> ?

c# - DLL中的Singleton类用于多个虚拟目录

java - 循环 MD5 计算时缓慢且内存泄漏

ios - objective C block 到 swift block

objective-c - iOS:显示加载图像时的黑色状态栏

objective-c - Xcode 中 NSManagedObject 属性的默认值

java - md5 php和android不一样