【问题标题】:Adding MD5 to a UITextField将 MD5 添加到 UITextField
【发布时间】:2023-12-13 00:43:01
【问题描述】:

对不起,如果这是一个愚蠢的问题,但很难让它发挥作用!

我已经搜索过 hi 和 low ,似乎下面的代码会生成一个 md5 哈希,但我不确定如何让我的 2 个密码文本字段使用它来生成发送到服务器。请告知我将不胜感激。

迈克

#import <CommonCrypto/CommonDigest.h>

- (NSString *)stringWithMD5Hash:(NSString *)inStr {
const char *cStr = [inStr UTF8String];
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] ];

}

【问题讨论】:

  • 嗨,伙计们,我快到了,现在它正在从输入中打印出一个 NSLOG 到密码字段 1 但只是不会将其发送到服务器这是代码问题还是服务器? NSString *str = self.newPassword1.text; NSString *md5 = [str md5]; NSLog(@"%@ -> %@", str, md5);

标签: iphone ios sdk md5


【解决方案1】:

致电[self stringWithMD5Hash:yourTextField.text]。您可能希望函数返回小写,因为大多数服务器端语言生成带有小写字符的 MD5 哈希。

【讨论】:

    【解决方案2】:

    很简单假设该方法与您的文本字段在同一个类中,只需执行以下操作:

    NSString *md5 = [self stringWithMD5Hash:textField.text]; 
    

    【讨论】:

      【解决方案3】:

      您应该将此代码放入Category(参见Apple documentation)中,然后将其添加到NSString 类中。您可以将其添加为类

      + (NSString *)stringWithMD5Hash:(NSString *)inStr {
        const char *cStr = [inStr UTF8String];
        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] ];
      }
      

      或作为实例方法

      - (NSString *)MD5Hash {
        const char *cStr = [self UTF8String];
        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] ];
      }
      

      那你可以像sudo rm -rf说的那样称呼它:

      NSString *md5 = [NSString stringWithMD5Hash:textField.text];
      

      NSString *md5 = [textField.text MD5Hash];
      

      【讨论】:

      • 实际上,如果您将其添加为类别,那不是:NSString *md5 = [NSString stringWithMD5Hash:textField.text];