我应该用java或php转换字符串sha1吗


Should I convert my string sha1, in java or php?

我正在开发一个具有登录和注册功能的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.loggingandroid.text.format

首先您可能想要查看:在数据库中存储密码的最佳方法

正如在一些评论中提到的,你应该知道SHA-1已经过时了。还要注意,SHA-1是不可逆转的。因此,一旦你对用户密码进行了散列,"就没有办法"取回原始密码。

关于您应该在何时何地加密或散列密码。我会在我的安卓应用程序中这样做。这样,当你通过网络发送密码时,它已经被加密了。