加密和签名创建

时间:2012-08-14 10:40:47

标签: iphone objective-c ios encryption md5

我需要在Objective C中进行以下过程创建签名的过程:

  1. ASCII编码NSString
  2. 使用MD5哈希结果
  3. 对结果字节(& 127)
  4. 执行按位运算
  5. 转换为Base64字符串
  6. 我被困在哪里开始。我能够在C#中完成这项任务,但在Objective C甚至ANSI C中都是亏本的。

    我使用以下命令从初始NSString获取UTF8String:

    [NSString UTF8String]
    

    希望你能提供帮助。

1 个答案:

答案 0 :(得分:1)

  1. 阅读String Conversions
  2. 由H2CO3下载NSString MD5 Category
  3. 选择Base64 encoders
  4. 您提到您在使用字符串转换时遇到问题,这就是您要转换为ASCII的内容:

    NSString* src = @"";
    NSData* data = [src dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion: YES];
    NSString* ascii = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
    

    执行按位操作有点复杂。你会想要在C语言中这样做:

    NSString* src = <MD5 hashed result>
    NSMutableString* dst = [[NSMutableString alloc] initWithCapacity: src.length];
    for(NSUInteger i=0;i<src.length;i++) {
        unichar c = [src characterAtIndex: i];
        [dst appendFormat: @"%d", (c & 127)];
    }
    
    //Base64 encode dst
    

    第三方应该告诉你如果需要它怎么做。