Iphone 加密和签名创建

Iphone 加密和签名创建,iphone,objective-c,ios,encryption,md5,Iphone,Objective C,Ios,Encryption,Md5,我需要通过目标C中的以下流程创建签名: ASCII编码一个字符串 用MD5散列结果 对结果字节执行按位操作(&127) 转换为Base64字符串 我不知道从哪里开始。我能够用C语言完成这项任务,但在目标C甚至ANSI C语言中我都不知所措 我使用以下方法从初始NSString获取UTF8String: [NSString UTF8String] 希望你能帮忙 阅读 通过H2CO3加载 你挑一个吧 您提到字符串转换有问题,这是您要转换为ASCII的内容: NSString* src = @"";

我需要通过目标C中的以下流程创建签名:

  • ASCII编码一个字符串
  • 用MD5散列结果
  • 对结果字节执行按位操作(&127)
  • 转换为Base64字符串
  • 我不知道从哪里开始。我能够用C语言完成这项任务,但在目标C甚至ANSI C语言中我都不知所措

    我使用以下方法从初始NSString获取UTF8String:

    [NSString UTF8String]
    
    希望你能帮忙

  • 阅读
  • 通过H2CO3加载
  • 你挑一个吧
  • 您提到字符串转换有问题,这是您要转换为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
    
    NSString*src=
    NSMutableString*dst=[[NSMutableString alloc]initWithCapacity:src.length];
    
    对于(i=0;i您为什么使用ASCII?这不是无损转换。单独处理这些步骤,每个步骤都很容易搜索。这不是我的定义-这是由第三方提供的一组指令,我必须遵循。我可以处理第2点和第4点,但特别是第1点和第3点,会引起我的问题。您非常正确-t如果他们想要法规遵从性,他们应该有一些例子。非常感谢您花时间提供帮助。我现在就尝试一下。