2016-03-23 10 views
1

私はログインと登録があるアンドロイドアプリケーションを開発しています。私のデータベースはphpMyAdminに保存されています。パスワードをsha1に保存したい私のアプリケーションはphpを通してデータベースと通信します。
私の質問は、phpmyadminではどのようなタイプがパスワード列であるべきですか? VarcharまたはBINARY(20)? パスワードをjavaまたはphpに変換する必要がありますか?どちらが簡単ですか?そのための組み込みメソッドは、JavaまたはPHPにありますか?他の暗号化を使用する必要がありますか?
これを使用しますか?javaまたはphpで文字列sha1を変換する必要がありますか?

private static String encryptPassword(String password) 
{ 
    String sha1 = ""; 
    try 
    { 
     MessageDigest crypt = MessageDigest.getInstance("SHA-1"); 
     crypt.reset(); 
     crypt.update(password.getBytes("UTF-8")); 
     sha1 = byteToHex(crypt.digest()); 
    } 
    catch(NoSuchAlgorithmException e) 
    { 
     e.printStackTrace(); 
    } 
    catch(UnsupportedEncodingException e) 
    { 
     e.printStackTrace(); 
    } 
    return sha1; 
} 

private static String byteToHex(final byte[] hash) 
{ 
    Formatter formatter = new Formatter(); 
    for (byte b : hash) 
    { 
     formatter.format("%02x", b); 
    } 
    String result = formatter.toString(); 
    formatter.close(); 
    return result; 
} 

タイプは? Java.utilまたはjava.util.logging,android.text.format

+1

"場所":可能な限り早く。 "sha1以外":sha1は古く、sha-2またはsha-3を使用します。 – Tom

+1

あなたが何をしても、クライアントは実際に(brute-forcingを防ぐために)格納されたハッシュを見るべきではありません。また、ハッシュする前に(ユーザーごとの)静的ナンスを含めること(レインボーテーブルと戦うために、どんなハッシュも漏れてはならないかどうか)を含めることが推奨されます。 – Siguza

答えて

0

まずあなたがチェックアウトしたいかもしれません: best-way-to-store-password-in-database

いくつかのコメントで述べたように、あなたがSHA-1が古くなっている知っている必要があります。また、SHA-1が不可逆的であるという事実にも注意してください。したがって、元のパスワードを元に戻す方法はありません。

パスワードの暗号化またはハッシュをいつ、どこで行う必要がありますか。私はAndroidアプリでやっています。この方法では、パスワードをワイヤを介して送信する際にパスワードが既に暗号化されています。

関連する問題