如何在IOS中从字符串生成md5?

如何在IOS中从字符串生成md5?,ios,md5,Ios,Md5,我正在尝试从字符串生成MD5。我成功地生成了密钥,但问题是我的密钥与android密钥不同。我使用在线工具生成了MD5密钥,结果与android相同,但与我的密钥不匹配。我使用静态字符串生成MD5,它是 1418212369896Sph!nxRock android MD5 key>d3db2cd07e21b3b55330d6746de32c0d(这与在线工具非常相似) IOS MD5密钥>2EC05E18061E51D326BF0BA7889B5413 下面是我用来生成MD5的代码 我用过这个

我正在尝试从字符串生成MD5。我成功地生成了密钥,但问题是我的密钥与android密钥不同。我使用在线工具生成了MD5密钥,结果与android相同,但与我的密钥不匹配。我使用静态字符串生成MD5,它是

1418212369896Sph!nxRock

android MD5 key>d3db2cd07e21b3b55330d6746de32c0d(这与在线工具非常相似)

IOS MD5密钥>2EC05E18061E51D326BF0BA7889B5413

下面是我用来生成MD5的代码


我用过这个方法:

NSString+MD5.h

#import <Foundation/Foundation.h>

@interface NSString (MD5)

- (NSString *)MD5;

@end
#导入
@接口字符串(MD5)
-(NSString*)MD5;
@结束
NSString+MD5.m

#import "NSString+MD5.h"
#import <CommonCrypto/CommonDigest.h>

@implementation NSString (MD5)

- (NSString *)MD5 {

    const char * pointer = [self UTF8String];
    unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

    CC_MD5(pointer, (CC_LONG)strlen(pointer), md5Buffer);

    NSMutableString *string = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [string appendFormat:@"%02x",md5Buffer[i]];

    return string;
}

@end
#导入“NSString+MD5.h”
#进口
@实现NSString(MD5)
-(NSString*)MD5{
常量字符*指针=[self UTF8String];
无符号字符md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(指针,(CC_LONG)strlen(指针),md5Buffer);
NSMutableString*string=[NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i=0;i
对于您的字符串:1418212369896Sph!nxRock

您的在线服务结果是:d3db2cd07e21b3b55330d6746de32c0d

方法返回:d3db2cd07e21b3b55330d6746de32c0d


希望这能帮助你

是的,但问题是我的密钥不同于android和在线MD5密钥生成器工具。正因为如此,我们的服务器(GetWebService)响应的是android生成的密钥,而不是IOS生成的密钥。显然,如果没有密钥,它将失败。您需要使用服务将密钥发送到客户端设备,或者同时使用硬编码密钥。显示调用md5方法的代码。你链接的代码对我有用。我刚刚创建了一个项目并复制了代码。它产生了
2014-12-10 13:34:03.910 TestObjC[32871:1990043]D3DB2CD07E21B3B55330D6746DE32C0D
感谢您的回复,我不能使用硬编码密钥,因为它是使用用户输入的一些动态参数生成的,我只想知道我是否做错了什么,或者我的密钥格式是否有错。顺便说一句,我使用的在线工具是iOS代码创建的md5字符串是
14182123
的md5,这是要散列的字符串的第一部分。这是一个比重复问题中的答案更好的答案。由于这个问题很可能会被关闭,请考虑在这里添加这个答案。