0

我需要经历一个从Objective C中的以下过程创建签名的过程:

  1. ASCII 编码一个 NSString
  2. 使用 MD5 对结果进行哈希处理
  3. 对结果字节执行按位运算 (&127)
  4. 转换为 Base64 字符串

我被困在从哪里开始。我能够在 C# 中完成这项任务,但在 Objective C 甚至 ANSI C 中不知所措。

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

[NSString UTF8String]

希望您能提供帮助。

4

1 回答 1

1
  1. 读取字符串转换
  2. 按 H2CO3 下载NSString MD5 类别
  3. 选择Base64 编码器

您提到您在字符串转换方面遇到问题,这就是您要转换为 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

如果他们需要,第 3 方应该告诉您如何操作。

于 2012-08-14T13:35:32.567 回答