mysql - 将 secret 信息存储在数据库中

标签 mysql database passwords software-design

我正在创建一个应用程序,该应用程序需要存储该信息,并在以后检索该信息,以向用户显示该信息。该信息将被视为敏感信息,并且可能包括员工特定站点的临时密码。我相信我明白密码应该与哈希值一起存储,然后您可以检查输入的哈希值是否与您存储在数据库中的内容相匹配。

我的问题是:以纯文本形式存储这些信息在道德上似乎是粗略的,作为一名程序员,我认为这几乎是非法的。我如何存储这些信息并在以后检索它?像 Last Pass 这样的网站可以实现这一点,但我没有创建密码管理器,也不是我认为我可以实现的东西,并说:“是的,这是安全的,用户的密码除了用户之外永远不会被看到”。还有哪些其他方法对此可行?

我正在考虑的一些功能包括让用户的登录信息在 x 天后甚至在使用后被删除,但这些密码仍然有机会被盗。我还可以包含其他内容或采取不同的做法吗?我是否有可能完全阻止这些密码出现在数据库中?

最佳答案

这是我用来加密密码然后解密密码的代码。如果您遇到任何问题,请告诉我。

mysql> create table test_2(id int, password varchar(500));
Query OK, 0 rows affected (0.21 sec)

mysql> select * from test_2;
Empty set (0.00 sec)

mysql> insert into test_2 values(1,DES_ENCRYPT('abc123@##','password'));
Query OK, 1 row affected, 1 warning (0.08 sec)

mysql> select * from test_2;
+------+---------------------------+
| id   | password                  |
+------+---------------------------+
|    1 | ÿö5r¢ÍòšMÀcEL]         |
+------+---------------------------+
1 row in set (0.00 sec)

mysql> select id,DES_DECRYPT(password,'password') as real_password from test_2;
+------+---------------+
| id   | real_password |
+------+---------------+
|    1 | abc123@##     |
+------+---------------+
1 row in set, 1 warning (0.05 sec)

关于mysql - 将 secret 信息存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50181881/

相关文章:

php - 在 Flash as3 中每 x 秒执行一次函数?

sql-server - 扩展第三方数据库的最佳实践?

javascript - HTML/CSS : How to make "password" input show the password?

asp.net - 尝试通过ASP.NET更改AD中的密码 "user must change"

java - 使用盐散列密码

mysql - 创建触发器时出现 SQL 错误 #1064

php - 获取特定行的列值

sql - 在 Oracle 数据库中更新连接查询结果中每一行的列的最有效方法是什么?

database - 我有哪个 COBOL 数据库?

javascript - 无需 jQuery 即可组合两个 AJAX