【问题标题】:Wierd behavior from method generating MD5 hash - returns same hash results生成 MD5 哈希的方法的奇怪行为 - 返回相同的哈希结果
【发布时间】:2011-10-07 14:53:26
【问题描述】:

我很困惑。我在我的应用程序中使用此方法,当我传入两个不同的字符串时,它可以返回相同的结果。

但是当我将此方法复制到另一个应用程序时,我的结果是正常的 - 我得到两个字符串的两个完全不同的结果。

+(NSString *) returnMD5HashOfString:(NSString*)aString 
{   
    // Create byte array of unsigned chars
    unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

    // Create 16 byte MD5 hash value, store in buffer
    CC_MD5(aString, aString.length, md5Buffer);

    // Convert MD5 value in the buffer to NSString of hex values
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
        [output appendFormat:@"%02x",md5Buffer[i]];

    return output;
}

【问题讨论】:

    标签: iphone ios hash md5


    【解决方案1】:

    CC_MD5 不需要一个字符串,它需要一个字符指针。

    【讨论】:

    • 太棒了。谢谢,我去了我从中获得方法的来源,并意识到我误解了其中的某些部分。这也解释了为什么当我在命令行中散列相同的值时生成的散列不同。我很想知道为什么给定我的错误代码,该方法会返回相同的“哈希”!
    • 巧合。 char 指针指向内存,人们不得不猜测它与字符串的长度相同。内存指向的是类实例而不是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多