在我的网络应用程序的注册表中,我有一个密码字段。现在,当我在提交按钮上的数据库中插入数据时。
方法一:
我使用 md5 函数生成它的哈希值,然后将加密数据保存到数据库中。
方法二:
我使用 MySql 中的查询将特定列数据直接转换为哈希值。
哪种方法开销较小,哪种方法在整个网络中更安全。请帮忙?
使用的数据库:MySql 5,前端:Java
先加密数据再插入mysql会更安全。否则,可能会通过侦听应用服务器和数据库之间的流量来“嗅探”数据。
使用 MD5 时要记住的另一点是使用“盐”值。如果不使用盐,MD5 很容易受到暴力攻击。使用盐意味着在计算 MD5 并保存到数据库之前将任意字符串添加到用户输入的值。
例如,如果用户输入的值是“ABC”,而您的盐值是“12345”,那么您将为“ABC12345”计算MD5。
您应该最明确地计算哈希,在应用程序级别对其进行加密。这将保护您免受重放和 MiM 攻击。存储加密的哈希而不是以明文加密密码将为您的用户增加额外的安全层,因为如果您的数据库被黑客入侵,攻击者将无法在其他网站上使用此信息(因为人们倾向于使用相同的密码)。
IMO,在处理敏感信息时,应将安全置于性能之前
您应该将加密的密码保存在数据库中。当您想要进行身份验证时,您应该比较两个加密字符串。这不是开销问题,而是安全问题(这也是为什么您应该考虑使用真正的加密而不是散列)。