私はログインと登録があるアンドロイドアプリケーションを開発しています。私のデータベースは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
?
"場所":可能な限り早く。 "sha1以外":sha1は古く、sha-2またはsha-3を使用します。 – Tom
あなたが何をしても、クライアントは実際に(brute-forcingを防ぐために)格納されたハッシュを見るべきではありません。また、ハッシュする前に(ユーザーごとの)静的ナンスを含めること(レインボーテーブルと戦うために、どんなハッシュも漏れてはならないかどうか)を含めることが推奨されます。 – Siguza