2016-11-18 8 views
1

私はプロジェクトに取り組んでおり、私たちのサーバーに渡すためにいくつかのユーザーの資格情報(ユーザー名、パスワード、ユーザーIDなど)を暗号化する必要があります。これを達成するためにAES256を使用することを決めました。この件についていくつかの調査を行ったところ、この問題に使いやすいソリューションであると主張しているプロジェクトに気づくのは避けがたいです。RNCryptorRNCryptorを意識して試してみよう

私はプロジェクトにフレームワークを組み込み、まもなくそれが私が思ったほど単純ではないことを認識しました。 ()は、文字列の資格情報を暗号化したいと思っている鍵を派生させて、()の鍵と私の文字列を適切なものに渡して解決することを望んでいました。 RNCryptorのメソッド()は、上記のメソッドから暗号化された文字列を返します。

これはあまりにもうまくいくが、

RNCryptorの現実は、それがこのようなメソッドを持っていることである。

[RNEncryptor encryptData:someData 
      withSettings:kRNCryptorAES256Settings 
       password:someString 
        error:&someError]; 

これは、用語の混乱です。

パスワードは何ですか?

これは決して説明しません。何のためのパスワード?これは、私が暗号化したいユーザパスワード、暗号化したいパスワード、または自分のコンピュータにログインするパスワード(sarcasm)です。

ENCRYPT DATA?

これは、暗号化するユーザー資格情報のUTF8エンコード文字列ですか。それは私の最高の推測ですが、RNCryptor Githubの「ドキュメンテーション」で説明されていません。

+0

ザフの答えは正しいが、私はあなたの質問をよりよく理解したいと思います。あなたが「鍵を派生させる」と言うとき、それを*から派生させると期待していますか? (RNCryptorは、渡したパスワードからそれを派生させます)。パスワードの暗号化は、データを暗号化する特定のケースです。暗号化アルゴリズムはあなたが暗号化しているものを気にしません。ここでのユースケースを理解することは困難です。あなたが本当に望んでいるのは、暗号化アルゴリズムではなく、鍵となるプロトコルです。メモとして、可能であれば、パスワードをまったく送信しないようにする必要があります。詳細はhttp://stackoverflow.com/a/31386549/97337を参照してください。 –

+0

よくある質問はhttps://github.com/RNCryptor/RNCryptorにあります。私はSwiftバージョンに追加したときにこのFAQでObjCの実装を更新しませんでした。私はおそらくそれを独自のものに引き出して、さまざまな実装が1つの一般的なFAQを参照できるようにする必要があります。 –

答えて

1

passwordは、暗号鍵を生成するために使用され、NSStringで暗号化されています。 encryptDataは暗号化するデータで、NSDataです。

暗号化は、データ(8ビットバイトの配列)で動作します。あなたは持っているものをNSDataに変換する必要があります。 RNCryptorはNSStringを取り、それから暗号化キーを導出し、

NSData *dataToBeEncrypted = [myString dataUsingEncoding:NSUTF8StringEncoding]; 

はさらに、それは、暗号化キーが必要です。 NSStringする方法があります。

もちろんオプションがありますが、これらのほとんどはRNCryptorによって内部的に処理されますが、それを使用する開発者にとってはまだ利用可能なものがあります。

多くのオプションを持つ2つの主要なバージョンがありますが、おそらくパスワードバージョンを使用するのが最良です。

NSStringパスワード取っワン:NSData暗号化キーなどNSData認証キーを取っ

+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings password:(NSString *)password error:(NSError **)error; 

秒。

+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings encryptionKey:(NSData *)encryptionKey HMACKey:(NSData *)HMACKey error:(NSError **)error; 

RNCryptorは、あなたが最良の選択である、それはパスワードから鍵導出、ランダムIV、暗号化されたデータとパディングの認証を処理します。

関連する問題