如何在iOS Objective-C应用程序和Ruby on Rails之间对加密数据进行编码?

如何在iOS Objective-C应用程序和Ruby on Rails之间对加密数据进行编码?,objective-c,ios,ruby,encryption,aes,Objective C,Ios,Ruby,Encryption,Aes,我正在开发一个iOS和RubyonRails应用程序,需要将加密数据从iOS应用程序传输到RubyonRails应用程序。我的挑战是如何在Objective-C中以一种我可以在Rails端解码的方式对数据进行编码。我使用as作为方法来加密数据,示例代码显示了加密数据的样子: printf("%s\n", [[plain description] UTF8String]); NSData *cipher = [plain AES256EncryptWithKey:key]; 这将创建如下输出:

我正在开发一个iOS和RubyonRails应用程序,需要将加密数据从iOS应用程序传输到RubyonRails应用程序。我的挑战是如何在Objective-C中以一种我可以在Rails端解码的方式对数据进行编码。我使用as作为方法来加密数据,示例代码显示了加密数据的样子:

printf("%s\n", [[plain description] UTF8String]);
NSData *cipher = [plain AES256EncryptWithKey:key];
这将创建如下输出:

我面临的挑战是,我需要找到一种方法将其通过连接到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

输入该编码值以将其发送到Rails应用程序。谢谢

我最终选择了Base64路线。我使用了:

+(NSString*)加密SE64STRING:(NSString*)数据{
NSString*key=;
NSData*plain=[数据数据使用编码:NSUTF8StringEncoding];
NSData*密码=[普通AES256EncryptWithKey:key];
NSString*str=[NSString base64StringFromData:密码长度:[密码长度]];
返回str;
}
然后将base 64编码字符串添加到RestKit HTTP头中:

[[RKClient sharedClient] setValue:encryptedTimestamp forHTTPHeaderField:@"<encrypted_header_value>"];
[[RKClient sharedClient]设置值:HttpHeaderField的encryptedTimestamp:@”“;

您可以使用标准AES加密。以下是具有AES-256-CBC密码和Base64编码的LIB,您可以在两种平台上快速使用:

红宝石 以下是如何使用AESCrypt Ruby gem:
目标-C 以下是如何使用AESCrypt Objective-C类:
祝你好运

因为HTTPS只加密流量。。。通过在每一个请求上提供签名,对于一个人来说,恶意发出看起来像来自iOS应用程序的请求要困难得多。为什么是-1?我不同意我的解决方案,我只是没有得到任何其他的回应。
[[RKClient sharedClient] setValue:encryptedTimestamp forHTTPHeaderField:@"<encrypted_header_value>"];
message = "top secret message"
password = "p4ssw0rd"

# Encrypting
encrypted_data = AESCrypt.encrypt(message, password)

# Decrypting
message = AESCrypt.decrypt(encrypted_data, password)
NSString *message = @"top secret message";
NSString *password = @"p4ssw0rd";

// Encrypting
NSString *encryptedData = [AESCrypt encrypt:message password:password];

// Decrypting
NSString *message = [AESCrypt decrypt:encryptedData password:password];