java - 我应该在 java 或 php 中转换字符串 sha1 吗?

标签 java php sha1 password-encryption

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

最佳答案

首先您可能想查看: best-way-to-store-password-in-database

正如一些评论中提到的,您应该知道 SHA-1 已经过时了。另请注意 SHA-1 是不可逆的。因此,一旦对用户密码进行哈希处理,“就无法”恢复原始密码。

关于应在何时何地对密码进行加密或哈希处理。我会在我的 Android 应用程序中执行此操作。这样,当您通过网络发送密码时,密码就已经加密。

关于java - 我应该在 java 或 php 中转换字符串 sha1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185059/

相关文章:

java - 使用 Jsp Servlet 中的 bootstrapValidator 远程检查数据库中的电子邮件可用性

php - 分别生成64个字符的十六进制字符串

php - 如何使用 PHP 制作 salt hash 从 web 注册新帐户?

c# - 我应该为表中的密码字段使用什么? MD5 还是 SHA1?

c# - 160位哈希算术运算的最高有效字节是多少?

java - 检查字符串是否包含空格后的子字符串

java - Play 框架将两个 Play 应用程序合二为一

java - 排除 JAXB 中的字段

php - Firefox 中的 Ctrl+r 用于刷新页面和我的 PHP 代码

php - MySQL - 根据关系表的值在最终输出中添加额外的列