【发布时间】:2012-07-20 14:31:35
【问题描述】:
我正在开发一个 iOS 和 Ruby on Rails 应用程序,需要将数据从 iOS 应用程序加密传输到 Ruby on Rails 应用程序。我的挑战是如何以我可以在 Rails 端解码的方式对 Objective-C 中的数据进行编码。我使用example in this SO question作为加密数据的方法,示例代码显示了加密数据的样子:
printf("%s\n", [[plain description] UTF8String]);
创建的输出如下所示:
我的挑战是,我需要找到一种方法将其通过网络传输到 Rails 应用程序,并且我可以解码以与 OpenSSL 代码一起使用,例如:
def decrypt(data)
cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
cipher.decrypt
cipher.key = cipher_key
cipher.iv = cipher_iv
decrypted_data = cipher.update(data)
decrypted_data << cipher.final
end
我认为 Base64 编码可能是最好的方法,因为这些数据最终会出现在 JSON 请求的 HTTP 标头中。似乎我可以使用 Base64.decode64 来解码 Ruby 端的数据并将其作为要解密的数据传递,但我希望有人能指导我这是否真的是最好的方法,并且不管编码,如何将指针变成这样的 NSData 对象:
NSData *cipher = [plain AES256EncryptWithKey:key];
进入该编码值以将其发送到 Rails 应用程序。谢谢!
【问题讨论】:
-
因为 HTTPS 仅对流量进行加密...通过在每个请求上提供签名,某人恶意发出请求使其看起来像是来自 iOS 应用程序的难度要大得多。跨度>
标签: objective-c ios ruby encryption aes