4

iPhoneプログラミング初心者です。私はアプリケーションを開発しています。私の要件は

私の最初のビューでは、パスワードを入力し、パスワードを sqlite に挿入することを確認します。その後、検証が実行されます。その後、パスワードが一致すると、次のビューがプッシュされます。次回の検証のために、確認パスワードを sqlite に保存する必要があります。

検証後にアプリケーションを閉じる場合は、アプリケーションをビルドして再度実行します。これで、パスワード検証ウィンドウが開かなくなりました。

現在のパスワードがアプリケーションのパスワードを終了する前に等しい場合、アプリケーションの成功ビューが開きます。ここで、検証は現在のパスワードと確認パスワード値 [つまり、アプリケーションを終了する前に保存されている古いパスワード] と比較する必要があります。

これを行うことは可能ですか?私を助けてください

ありがとう。

これくらいやった

-(void)insertDatapsw:(NSString *)password:(NSString *)confirmpsw

{

    //[self createEditableCopyOfDatabaseIfNeeded];

    sqlite3_stmt *insertStatement = nil;

    NSString *sql;

    int returnvalue;



    sql = [NSString stringWithFormat:@"insert into LogInPsw(ConfirmPsw) values (?)"];



    returnvalue = sqlite3_prepare_v2(database, [sql UTF8String], -1, &insertStatement, NULL);



    if (returnvalue == SQLITE_DONE)

    {

        NSAssert1 (0,@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

    }



     //sqlite3_bind_text(insertStatement, 1,[strPasswd UTF8String], -1, SQLITE_TRANSIENT);



     sqlite3_bind_text(insertStatement, 1,[strConfirmPsw UTF8String], -1, SQLITE_TRANSIENT);



       if (SQLITE_DONE!= sqlite3_step(insertStatement))

    {

        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));



    }

    else

        sqlite3_reset(insertStatement);



    sqlite3_finalize(insertStatement);



}
4

2 に答える 2

1

私があなたのことを正しく理解しているのであれば、後で使用するために、正しく入力したパスワードを保存しておいてください。

まず、パスワードを保存するために sqlite を使用しません。標準的なアプローチは、キーチェーンを使用することです。このKeychain exampleを見てください。多くのラッパーの 1 つを使用して、生活を楽にすることができます。

NSUserDefaultsを使用するのは簡単ですが、より安全でない方法です。

パスワードと保存されたパスワードがあれば、比較するだけです。

おまけのヒント: パスワードをデータベースに保存するときは、パスワードをプレーン テキストとして保存しないでください。パスワードのハッシュを保存します ( SHA2などを使用できます)。ユーザーがパスワードを入力すると、パスワードのハッシュと保存されたハッシュを比較できます。

于 2013-02-12T16:23:22.867 に答える