私は何をしようとしているのかに役立つかもしれない何かを見つけるために何時間も検索しましたが、Objective-Cでログイン資格情報を暗号化し、PHPで復号化します
基本的に私のiPhoneアプリケーションのログイン資格情報(ユーザー名とパスワード)を暗号化し、自分のサーバー上のphpファイルに送信し、それらを復号化し、データベースの内容を検証します。
私はiPhone開発に精通していますが、暗号化/セキュリティ関連の何かをしている人はいません。私は正しく私はローカル暗号化されたデータのブロブを送信するだけでなく、正しくiphoneの暗号化を行っていると思うが、どこでPHPの復号化側で始めるべきかわからない。
相続人は任意の助け
NSString* stringTo = @"Test Encoding String";
NSString* key = @"1234567812345678";
NSData* encrypedData = [[stringTo dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
NSString* decrypt = [[NSString alloc] initWithData:[encrypedData AES256DecryptWithKey:key] encoding:NSUTF8StringEncoding];
NSLog(@"\nDECRYPT :%@", decrypt); // DOES RETURN THE SAME VALUE
NSString *urlString = @"SERVERNAME/FILE.php";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"encryptedString\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:encrypedData];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"RS: %@", returnString);
おかげで多くを使用してコードイムの一部。私はしばらくの間探していて、私のために働いたものは見つけられませんでした。私はそれが一般的に使用されるもののように思えるので、私には同様の質問があると思っています。
前回の回答に「あなたのログインを忘れました」というコメントはありませんでした。本当に同じパスワードを返す必要はありますか?なぜユーザーにパスワードをリセットするオプションを与えるだけではないのですか? 「パスワードを忘れた」ボタンをクリックすると、実際に私は自分の現在のパスワードをメールで送ってきます。データベースに容易に取り出せる形式(おそらくプレーンテキスト)で保存していることを示しています。 – Mike
さて、私はプレーンテキストで保存しないで、それを送信する前に解読するだけですが、これは良い選択です。それらにランダムな一時パスワードを入力します。 – JLoewy
実際には、サーバー上の任意の場所にある暗号解読キーで暗号化して保存することは、本質的にプレーンテキストで保管しています。 – Mike