【问题标题】:How to generate md5 from String in IOS? [duplicate]如何在IOS中从String生成md5? [复制]
【发布时间】:2015-02-08 15:30:21
【问题描述】:

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

1418212369896Sph!nxRock

android MD5 key > d3db2cd07e21b3b55330d6746de32c0d(这个和在线工具完全一样)

IOS MD5密钥> 2EC05E18061E51D326BF0BA7889B5413

我用来生成MD5的代码如下

https://stackoverflow.com/a/2018626/1921597

【问题讨论】:

  • 是的,但问题是我的密钥与 android 和在线 MD5 密钥生成器工具不同。正因为如此,我们的服务器(GET webservice)正在响应 android 生成的密钥,而不是 IOS 生成的密钥
  • 显然没有钥匙它会失败。您要么需要使用服务将密钥发送到客户端设备,要么同时使用硬编码密钥。
  • 向我们展示调用 md5 方法的代码。您链接的代码对我有用。我刚刚创建了一个项目并复制了该代码。它产生2014-12-10 13:34:03.910 TestObjC[32871:1990043] D3DB2CD07E21B3B55330D6746DE32C0D
  • 感谢您的回复,我无法使用硬编码密钥,因为它是使用用户输入的一些动态参数生成的,我只想知道我做错了什么还是我的密钥的格式。我使用的在线工具是md5hashgenerator.com
  • 顺便说一句,您的 iOS 代码创建的 md5 字符串是 14182123 的 md5,这是您要散列的字符串的第一部分。

标签: ios md5


【解决方案1】:

我用过这个方法:

NSString+MD5.h

#import <Foundation/Foundation.h>

@interface NSString (MD5)

- (NSString *)MD5;

@end

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

对于您的字符串:1418212369896Sph!nxRock

您的在线服务结果为:d3db2cd07e21b3b55330d6746de32c0d

方法返回:d3db2cd07e21b3b55330d6746de32c0d

希望对你有帮助

【讨论】:

  • 这比重复问题中的答案更好。由于此问题可能已关闭,请考虑在此处添加此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 2011-08-09
  • 2021-01-18
相关资源
最近更新 更多