我需要经历一个从Objective C中的以下过程创建签名的过程:
- ASCII 编码一个 NSString
- 使用 MD5 对结果进行哈希处理
- 对结果字节执行按位运算 (&127)
- 转换为 Base64 字符串
我被困在从哪里开始。我能够在 C# 中完成这项任务,但在 Objective C 甚至 ANSI C 中不知所措。
我已经使用以下方法从初始 NSString 获取 UTF8String:
[NSString UTF8String]
希望您能提供帮助。
我需要经历一个从Objective C中的以下过程创建签名的过程:
我被困在从哪里开始。我能够在 C# 中完成这项任务,但在 Objective C 甚至 ANSI C 中不知所措。
我已经使用以下方法从初始 NSString 获取 UTF8String:
[NSString UTF8String]
希望您能提供帮助。
您提到您在字符串转换方面遇到问题,这就是您要转换为 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 方应该告诉您如何操作。