在保密的数据库中存储信息

时间:2018-05-04 19:25:19

标签: mysql database passwords software-design

我创建的应用程序需要存储并稍后检索,以便向用户显示该信息。此信息将被视为敏感信息,可能包含员工特定站点的临时密码。我相信我理解密码应该只与他们的哈希一起存储,然后你可以检查输入的哈希值是否与你在数据库中存储的哈希值相匹配。

我的问题是:如果没有作为程序员我认为边缘非法,那么以纯文本形式道德地存储这些信息似乎是粗略的。我如何存储这些信息并在以后检索它?像上次通过这样的网站实现了这一目标,但我没有创建密码管理器,也不是我认为我可以完成和说的那样,"是的,这是安全的,用户的密码永远不会被看到除了用户"。还有哪些其他方法可行?

我考虑的一些功能包括在x天或甚至使用它们之后擦除用户的登录信息,但这些密码仍有机会被盗。还有什么我可以包括或做的不同?有可能我可以阻止这些密码在数据库中吗?

1 个答案:

答案 0 :(得分:0)

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

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)