我需要在 Objective C 中经历以下过程创建签名的过程:
- 对 NSString 进行 ASCII 编码
- 使用 MD5 对结果进行哈希处理
- 对结果字节执行按位运算 (&127)
- 转换为 Base64 字符串
我不知道从哪里开始。我能够用 C# 完成这个任务,但对 Objective C 甚至 ANSI C 却不知所措。
我已经使用以下方法从初始 NSString 获取 UTF8String:
[NSString UTF8String]
希望能帮到你。
最佳答案
- 阅读 String Conversions
- 下载 NSString MD5 Category通过H2CO3
- 选择 Base64 encoders
您提到您在字符串转换方面遇到问题,这就是您想要转换为 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 方需要,他们应该告诉您如何操作。
关于iphone - 加密和签名创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11950558/