Java 我应该在哪里直接(通过查询)或通过前端的函数在db列中使用MD5哈希?

Java 我应该在哪里直接(通过查询)或通过前端的函数在db列中使用MD5哈希?,java,mysql,database,md5,Java,Mysql,Database,Md5,在我的web应用程序的注册表单中,我有一个密码字段。 现在,当我在数据库中的提交按钮上插入数据时 方法1: 我使用md5函数生成它的哈希值,然后将加密数据保存到数据库中。 方法2: 我使用MySql中的查询直接将特定列数据转换为哈希值。 哪种方法开销较小,哪种方法更安全 网络。请帮忙 使用的数据库:MySql 5,前端:Java您应该将加密密码保存在数据库中。当您想要进行身份验证时,您应该比较两个加密字符串。这不是开销问题,而是安全问题(这也是为什么你应该考虑一个替代哈希)。 首先对数据进行加密

在我的web应用程序的注册表单中,我有一个密码字段。 现在,当我在数据库中的提交按钮上插入数据时

方法1:

我使用md5函数生成它的哈希值,然后将加密数据保存到数据库中。

方法2:

我使用MySql中的查询直接将特定列数据转换为哈希值。

哪种方法开销较小,哪种方法更安全 网络。请帮忙


使用的数据库:MySql 5,前端:Java

您应该将加密密码保存在数据库中。当您想要进行身份验证时,您应该比较两个加密字符串。这不是开销问题,而是安全问题(这也是为什么你应该考虑一个替代哈希)。 首先对数据进行加密,然后将其插入mysql会更安全。否则,可能会通过监听应用服务器和数据库之间的流量来“嗅探”数据

使用MD5时要记住的另一点是使用“salt”值。如果不使用盐,MD5容易受到暴力攻击。 使用salt意味着在计算MD5并保存到数据库之前,向用户输入的值添加任意字符串


例如,如果用户输入的值为“ABC”,您的salt值为“12345”,则您将计算“ABC12345”的MD5

您应该最灵活地计算散列,并在应用程序级别对其进行加密。这将保护您免受重播和MiM攻击。 存储加密的哈希而不是在明文中加密密码将为您的用户增加额外的安全层,因为如果您的数据库遭到黑客攻击,攻击者将无法在其他网站上使用此信息(因为人们往往使用相同的密码)


在我看来,在处理敏感信息时,应该把安全放在性能之前

我想你没有正确回答这个问题。有一些MySql构造,通过它们我们可以直接对数据库列应用安全性。我想知道我是在数据库级还是在代码中使用这种方法。请看一下并提供答案。不过我建议使用
bcrypt