【问题标题】:How to encrypt data using public key under iOSiOS下如何使用公钥加密数据
【发布时间】:2015-04-28 16:26:22
【问题描述】:

我对安全主题很陌生,对此我有疑问。我在 iOS 下创建应用程序。我需要通过 HTTP 与某个服务器连接,然后获取它的公钥(SSL 证书)。然后我需要使用这个公钥来加密一些数据并将它们发送到同一个服务器。我的问题是我不知道该怎么做。谁能给我解释一下如何在iOS下获取公钥然后用它来加密数据?

【问题讨论】:

  • 您确定必须实现握手并加密数据吗?通常这是由 NSURLSession 在为您发送和接收数据到 https URL 时完成的。
  • 嗯,你可能是对的 :)。就像我说的,在安全方面我完全是菜鸟。你能解释一下你会如何以你的方式做到这一点吗?
  • 我更新了我的答案并添加了一个示例。只需添加您自己的 url,您就可以通过 SSL 进行通信了。
  • @Eike 你能再粘贴你的答案吗,因为我在任何地方都找不到它:)
  • 也许是我的错,所以我再次在下面添加了我的答案:)

标签: ios ssl encryption


【解决方案1】:

例如,当您使用以 https 为前缀的 url(https==http over ssl)时,NSURLSession 将为您处理此问题。一个简单的 GET 将如下面的代码所示。所有握手、公钥的东西都将为您处理。 如果你使用 post 和发送数据到服务器,如果使用 https url,也会为你处理加密。

// use default session configuration
NSURLSessionConfiguration *defaultConfigObject =  [NSURLSessionConfiguration defaultSessionConfiguration];

// create session without a delegate, use global operation queue
NSURLSession *session =  [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];

// create a data task printing the response payload to NSLog
NSURLSessionDataTask *dataTask = [session  dataTaskWithURL:[NSURL URLWithString:@"https://developer.apple.com"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"Response: %@", responseString);
}];

// run
[dataTask resume];

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 2015-04-02
    • 2014-03-17
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多