我正在研究iOS和Ruby on Rails应用程序,并需要将从iOS应用程序加密的数据传输到Ruby on Rails应用程序。我的挑战是如何在Objective-C中对数据进行编码,以便我可以在Rails端进行解码。我使用的example in this SO question的方法对数据进行加密,示例代码显示了加密的数据将是什么样子的:如何在iOS Objective-C应用程序和Ruby on Rails之间编码加密数据?
printf("%s\n", [[plain description] UTF8String]);
它创建如下所示的输出:
< 3fe47b63 bd9a84ab 30dfb1a4 e409b60f>
我面临的挑战是,我需要找到一种方法,跨线得到这个在我可以使用OpenSSL代码中使用像解码方式的Rails应用程序:
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? – 2012-07-21 22:36:53
由于HTTPS仅对流量进行加密......通过在每个请求上提供签名,对于恶意请求使其看起来像来自iOS应用程序的请求,要困难得多。 – 2012-07-22 01:59:09