2015-04-02 80 views
-4

需要将密码存储在其他服务的mysql中。哈希不起作用,我需要解密密码。如何安全地做到这一点?只有我认为安全的方法是使用硬件令牌解密密钥?还有其他问题吗?对不起我英语不好。如何在mysql中安全地存储密码以后在php中解密它们,而不是哈希?

+1

如果您认为需要解密密码,则可能是错误的。 – neminem 2015-04-02 17:01:58

+0

你不能也不应该这样做,因为密码必须是保密的,并且你使用MD5哈希的方式,如果你正在尝试进行登录,你应该散列用户的输入并通过散列密码进行比较在数据库上。 – xsami 2015-04-02 17:07:08

+0

通常,您不希望允许他们被解密。如果你可以解密他们,那么其他人也可以解决问题。 – 2015-04-02 17:08:28

回答

0

您问如何安全地将加密数据存储在MySQL中,以便可以自动解密。

这是事情:加密和解密本身很容易。 Php提供了mcrypt软件包。 http://php.net/manual/en/mcrypt.examples.php

但是,这种程序的安全性取决于安全密钥管理。如果您使用MySQL的应用程序能够解密数据,并且密钥可用,那么穿透您的系统的网络犯罪分子将可以访问它。网络犯罪分子可以阅读你的PHP代码,看你如何解密这些数据,并自己做。所以这个过程的安全取决于你的对手获得你的钥匙有多难。

我想你可以创建一个接受加密数据并返回解密数据的Web服务。该Web服务可以在其中保存密钥。你可以保护它在几个方面:

  1. 把它在防火墙后面
  2. 率限制到一个几十解密运算每秒
  3. 保持里面的解密密钥。
  4. 记录所有操作(但不是解密的数据)并努力监控日志。

另一种可能性是做一些客户端的事情。开源密码安全软件Keepass http://keepass.info/就是一个很好的例子,Bruce Schneier的密码管理员也是如此。 https://www.schneier.com/blog/archives/2014/09/security_of_pas.html

单向密码散列(http://php.net/manual/en/book.password.php)可防止解密,但仍允许进行密码验证。窃取单向散列的密码要困难得多。

尊重,如果密码保护有价值的资产,这不适合缺乏经验的人。网络犯罪分子比我们其他人遥遥领先。

+0

感谢您的专业答复,我也这样认为,但我认为使用一些硬件USB令牌,如果可能的话。 – user2557769 2015-04-02 17:59:22