我正在开发一个具有登录和注册功能的android应用程序。我将数据库存储在phpMyAdmin
中。我想将密码存储在sha1
中。并且我的应用程序通过php
与数据库进行通信
我的问题是,在phpmyadmin中,密码列应该是什么类型?Varchar还是BINARY(20)?我应该用java还是php转换密码?哪个更容易?在java或php中有内置的方法吗?我应该使用其他加密吗
我应该用这个吗?
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
?
首先您可能想要查看:在数据库中存储密码的最佳方法
正如在一些评论中提到的,你应该知道SHA-1已经过时了。还要注意,SHA-1是不可逆转的。因此,一旦你对用户密码进行了散列,"就没有办法"取回原始密码。
关于您应该在何时何地加密或散列密码。我会在我的安卓应用程序中这样做。这样,当你通过网络发送密码时,它已经被加密了。