私はプロジェクトに取り組んでおり、私たちのサーバーに渡すためにいくつかのユーザーの資格情報(ユーザー名、パスワード、ユーザーIDなど)を暗号化する必要があります。これを達成するためにAES256
を使用することを決めました。この件についていくつかの調査を行ったところ、この問題に使いやすいソリューションであると主張しているプロジェクトに気づくのは避けがたいです。RNCryptor
RNCryptorを意識して試してみよう
私はプロジェクトにフレームワークを組み込み、まもなくそれが私が思ったほど単純ではないことを認識しました。 ()は、文字列の資格情報を暗号化したいと思っている鍵を派生させて、()の鍵と私の文字列を適切なものに渡して解決することを望んでいました。 RNCryptor
のメソッド()は、上記のメソッドから暗号化された文字列を返します。
これはあまりにもうまくいくが、
RNCryptor
の現実は、それがこのようなメソッドを持っていることである。
[RNEncryptor encryptData:someData
withSettings:kRNCryptorAES256Settings
password:someString
error:&someError];
これは、用語の混乱です。
パスワードは何ですか?
これは決して説明しません。何のためのパスワード?これは、私が暗号化したいユーザパスワード、暗号化したいパスワード鍵、または自分のコンピュータにログインするパスワード(sarcasm)です。
ENCRYPT DATA?
これは、暗号化するユーザー資格情報のUTF8エンコード文字列ですか。それは私の最高の推測ですが、RNCryptor
Githubの「ドキュメンテーション」で説明されていません。
ザフの答えは正しいが、私はあなたの質問をよりよく理解したいと思います。あなたが「鍵を派生させる」と言うとき、それを*から派生させると期待していますか? (RNCryptorは、渡したパスワードからそれを派生させます)。パスワードの暗号化は、データを暗号化する特定のケースです。暗号化アルゴリズムはあなたが暗号化しているものを気にしません。ここでのユースケースを理解することは困難です。あなたが本当に望んでいるのは、暗号化アルゴリズムではなく、鍵となるプロトコルです。メモとして、可能であれば、パスワードをまったく送信しないようにする必要があります。詳細はhttp://stackoverflow.com/a/31386549/97337を参照してください。 –
よくある質問はhttps://github.com/RNCryptor/RNCryptorにあります。私はSwiftバージョンに追加したときにこのFAQでObjCの実装を更新しませんでした。私はおそらくそれを独自のものに引き出して、さまざまな実装が1つの一般的なFAQを参照できるようにする必要があります。 –