使用比md5更强大的方式对mysql密码进行哈希处理

10 浏览
0 Comments

使用比md5更强大的方式对mysql密码进行哈希处理

我将我的密码设置为使用md5加密,并作为测试,将密码设置为owner。然后我访问了这个网站,将md5哈希值输入,它能够返回给我密码。我觉得md5不安全。你有什么办法可以让哈希函数更强大吗?

0
0 Comments

在处理密码时,我决定使用password_hash和password_verify函数对密码进行加盐处理。这是因为在处理密码时,使用md5等弱哈希算法会存在一些安全风险。为了提高密码的安全性,我们需要使用更强大的哈希算法。下面是我采用的方法:

首先,我们需要确保我们的应用程序运行在支持password_hash和password_verify函数的环境中。这些函数通常在PHP的版本5.5及以上才可用。

接下来,我们可以使用password_hash函数对密码进行哈希加密。这个函数将自动为密码生成一个随机的盐,并使用bcrypt算法对密码进行加密。以下是使用password_hash函数的示例代码:

$password = "my_password";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

在上面的代码中,我们将密码"my_password"传递给password_hash函数,并将结果保存在$hashedPassword变量中。注意,我们使用了PASSWORD_DEFAULT参数,这使得函数使用当前最安全的加密算法。

一旦密码被哈希加密,我们可以使用password_verify函数来验证密码。该函数将比较明文密码和已加密的哈希密码是否匹配,并返回一个布尔值。以下是使用password_verify函数的示例代码:

$password = "my_password";
$hashedPassword = "$2y$10$J0HJzXxslbbL3Rt1s0D8G.3l6UQyBn4AsK1iIXf3z5PQkI0l5HdMm";
if (password_verify($password, $hashedPassword)) {
    echo "Password is valid!";
} else {
    echo "Invalid password!";
}

在上面的代码中,我们将明文密码"my_password"和已加密的哈希密码进行比较。如果密码匹配,将输出"Password is valid!",否则将输出"Invalid password!"。

通过使用password_hash和password_verify函数,我们可以增加密码的安全性。这些函数会自动处理盐的生成和存储,使得我们不必担心密码的安全性问题。因此,我们可以更加放心地保护用户的密码信息。

0
0 Comments

在使用MySQL存储密码时,使用较强的加密算法代替MD5,是因为MD5加密算法存在一些安全问题。MD5是一种常见的哈希函数,它将任意长度的数据映射为固定长度的哈希值。然而,由于MD5算法的特性,它容易受到彩虹表攻击。

彩虹表攻击是一种基于预先计算的数据表的密码破解方法。攻击者可以在事先计算出的数据表中查找与特定哈希值相匹配的明文密码。由于MD5算法的哈希值是固定长度的,攻击者可以通过在彩虹表中查找相同的哈希值来猜测密码。因此,使用MD5存储密码容易被破解。

为了解决这个问题,可以使用MYSQL的SHA1()哈希函数来加密密码。SHA1是一种更强的加密算法,它可以将任意长度的数据映射为160位的哈希值。与MD5不同,SHA1哈希值的长度较长,使得彩虹表攻击变得更加困难,提高了密码的安全性。

然而,仅仅使用SHA1也不能完全解决密码安全问题。更好的做法是将密码的加密交给应用程序来处理,而不是依赖于数据库。这样可以在应用程序中实现更多的安全措施,如使用盐值来增加密码的复杂性和安全性。

总之,为了提高密码的安全性,应该避免使用MD5作为密码的加密算法。而是使用更强的算法如SHA1,并将密码的加密交给应用程序来处理,以提高密码的安全性。以下是使用MYSQL SHA1()哈希函数的示例代码:

INSERT INTO users (username, password) VALUES ('john', SHA1('password'));

0