1

私はプロジェクトに取り組んでおり、サーバーに渡すためにいくつかのユーザー資格情報 (ユーザー名、パスワード、userId など) を暗号化する必要があります。これを実現するために使用することにしAES256ました。このテーマについていくつかの調査を行ったところ、RNCryptorこの問題に対する使いやすいソリューションであると主張するプロジェクトに気付かずにはいられませんでした。

そのため、フレームワークをプロジェクトに含めたところ、思ったほど簡単ではないことにすぐに気付きました。資格情報文字列を簡単に暗号化できるソリューションを望んでいました-(1)文字列化された資格情報を暗号化するキーを導出し、(2)キーと文字列を適切なRNCryptorメソッドに渡します。 (3)上記のメソッドから暗号化された文字列を取得します。

しかし、これは本当であるには良すぎるでしょう。

の現実にRNCryptorは、次のようなメソッドがあります。

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

これは、用語のために混乱を招きます。

パスワードとは?

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

データを暗号化しますか?

これは、暗号化したいユーザー資格情報の UTF8 エンコード文字列ですか? それは私の最善の推測ですが、RNCryptorGithubの「ドキュメント」では説明されていません。

4

1 に答える 1

1

password暗号化キーの生成に使用されNSString、データの暗号化に使用されます。encryptDataは暗号化するデータで、NSData.

暗号化は、8 ビット バイトの配列であるデータを処理します。持っているものは何でも に変換する必要がありますNSData。の場合、NSString次の方法があります。

NSData *dataToBeEncrypted = [myString dataUsingEncoding:NSUTF8StringEncoding];

NSString *myString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];

さらに、暗号化キーが必要です。RNCryptor は、そこNSStringから暗号化キーを取得して派生させます。

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

より多くのオプションを備えた 2 つのメイン バージョンがあります。おそらく、パスワード バージョンを使用するのが最適です。

NSStringパスワードを取得する 1 つ:

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

NSData暗号化キーと認証キーを取得する秒NSData

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

RNCryptor は最良の選択です。パスワードからのキー導出、ランダム IV、暗号化されたデータの認証、およびパディングを処理します。

于 2016-11-18T21:25:47.480 に答える