iphone - 加密和签名创建

标签 iphone objective-c ios encryption md5

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

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

我不知道从哪里开始。我能够用 C# 完成这个任务,但对 Objective C 甚至 ANSI C 却不知所措。

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

[NSString UTF8String]

希望能帮到你。

最佳答案

  1. 阅读 String Conversions
  2. 下载 NSString MD5 Category通过H2CO3
  3. 选择 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/

相关文章:

iphone - AudioFileSetProperty 返回 'kAudioFileUnsupportedPropertyError (pty?)'

iphone - iOS7 - 在状态栏下查看 - edgesForExtendedLayout 不工作

objective-c - 在 iOS 8.0 项目中安装 ReactiveCocoa 3.0.0-alpha.1 的问题

ios - 如何在 Swift 中强制设备旋转?

javascript - 检测 iPhone 结束事件

ios - 转移应用程序后获取 'A valid provisioning profile for this executable was not found'

iphone - 这段上传图片的代码需要做哪些更改并从服务器获得响应

objective-c - 将 "hello world"扩展为 HelloWorld 的 C 预处理器宏

iphone - 什么是 Apple App Store 中应用程序的 "current version"?

ios - 是否可以在 iOS 14 WidgetKit 中动态更新/更改布局(例如 View 数量)?