我正在开发一个具有登录和注册功能的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
?
最佳答案
首先您可能想查看: best-way-to-store-password-in-database
正如一些评论中提到的,您应该知道 SHA-1 已经过时了。另请注意 SHA-1 是不可逆的。因此,一旦对用户密码进行哈希处理,“就无法”恢复原始密码。
关于应在何时何地对密码进行加密或哈希处理。我会在我的 Android 应用程序中执行此操作。这样,当您通过网络发送密码时,密码就已经加密。
关于java - 我应该在 java 或 php 中转换字符串 sha1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185059/