如何在数据库表中存储密码

tem*_*elm 2 c# database encryption passwords store

我正在设计一个C#应用程序,我需要将用户的登录信息(包括密码)存储在数据库表中.我想知道这是一个不错的方式.

我知道将密码存储为明文是一个可怕的想法.

我在考虑加密密码然后存储它们.之后,每次用户输入密码时,我都可以加密输入并将加密输入与数据库中已有的输入进行比较.我的计划是使用一个良好的加密函数...

Cam*_*ner 5

切勿存储密码.存储密码的哈希值.

请注意,这不是加密.散列和加密是相关的,但它们并不相同.

您可以做的最好的事情是使用标准密码散列函数,如bcrypt或pbkdf2.不要重新发明轮子.

本文对如何安全地存储密码进行了很好的描述.


Ole*_*ksi 5

我认为一种常见的策略是使用SHA-256之类的密码来创建密码并将其存储在数据库中.然后,要登录,您可以对用户输入的内容进行哈希处理,并将其与数据库中的内容进行比较.

这个系统意味着你的"加密"是一种方式.给定密码哈希,您无法检索密码.请注意,这会产生可用性后果.具体来说,您无法向用户发送密码.您只能重置密码.

进一步的改进将是密码哈希你之前.这可以防止涉及彩虹表的一类攻击.您几乎肯定会这样做以及散列密码.

正如其他人所提到的,重复这几次以防止暴力攻击也很重要.