iOSおよびRubyonRailsアプリケーションで作業しており、iOSアプリからRubyonRailsアプリケーションに暗号化されたデータを送信する必要があります。私の課題は、Rails側でデコードできる方法でObjective-Cでデータをエンコードする方法です。このSOの質問の例をデータを暗号化する方法として使用しています。サンプルコードは、暗号化されたデータが次のようになることを示しています。
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
このデータはJSONリクエストのHTTPヘッダーに含まれるため、Base64エンコーディングが最善の方法であると考えています。Base64.decode64を使用してRuby側のデータをデコードし、復号化するデータとして渡すことができるようですが、これが本当に最善の方法であるかどうか、およびそれに関係なく、誰かが私を導いてくれることを願っています。エンコーディング、次のようにNSDataオブジェクトへのポインタを回す方法:
NSData *cipher = [plain AES256EncryptWithKey:key];
そのエンコードされた値に変換して、Railsアプリに取得します。ありがとう!