我正在开发一个 iOS 和 Ruby on Rails 应用程序,需要将数据从 iOS 应用程序加密传输到 Ruby on Rails 应用程序。我的挑战是如何以我可以在 Rails 端解码的方式对 Objective-C 中的数据进行编码。我使用这个 SO question 中的示例作为加密数据的方法,示例代码显示了加密数据的样子:
printf("%s\n", [[plain description] UTF8String]);
这会创建如下所示的输出:
<3fe47b63 bd9a84ab 30dfb1a4 e409b60f>
我面临的挑战是,我需要找到一种方法将其通过网络传输到 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 应用程序。谢谢!