我正在开发一个iOS和Ruby on Rails应用程序,需要加密从iOS应用程序到Ruby on Rails应用程序的数据传输。我的问题是如何在Objective-C中对数据进行编码,以便我可以在Rails端解码。我正在使用这个SO问题中提供的示例作为加密数据的方法,示例代码显示加密后的数据将如下所示:
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应用程序可使用的值。谢谢!