如何在IOS中从字符串生成md5?
我正在尝试从字符串生成MD5。我成功地生成了密钥,但问题是我的密钥与android密钥不同。我使用在线工具生成了MD5密钥,结果与android相同,但与我的密钥不匹配。我使用静态字符串生成MD5,它是 1418212369896Sph!nxRock android MD5 key>d3db2cd07e21b3b55330d6746de32c0d(这与在线工具非常相似) IOS MD5密钥>2EC05E18061E51D326BF0BA7889B5413 下面是我用来生成MD5的代码如何在IOS中从字符串生成md5?,ios,md5,Ios,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,这是要散列的字符串的第一部分。这是一个比重复问题中的答案更好的答案。由于这个问题很可能会被关闭,请考虑在这里添加这个答案。