【发布时间】:2016-08-21 20:34:16
【问题描述】:
我想将公钥和私钥安全地存储在数据库中。
因此,我的问题是如何将私钥安全地存储在数据库中。 (无论如何,公钥不需要那么安全)。
我目前有两种方法。
- 将密码(即用户的主密码)添加到私钥并将其作为字符串存储在数据库中
- 使用对称算法加密私钥并将其作为字符串存储在数据库中
这些方法是否足够?
哪个更好或者它们是一样的?
有没有更好的方法?
更新 你们中的一些人可能对我为什么要这样做感到困惑。我的用例是一个基于团队的密码管理系统。公钥用于加密密码(团队中的每个用户一个),带有 passphase 的私钥用于解密密码。
【问题讨论】:
-
第一个与第二个仅在对称加密的工作方式上有所不同。它们本质上是等价的,但是对于第二个,您可以自己选择对称加密算法。两者都有优点和缺点。由于您尚未提出要求,这将基于意见。
-
我唯一的要求是安全地存储私钥(即,如果黑客掌握了它,他们就无法解密它)。根据您的说法,它们本质上是相同的,但是第二种方法给了我更多的控制权。我对吗?有没有更好的方法?还有你想知道什么样的要求?
-
是的,但是第二种方法也有一个缺点,因为每个人,甚至密码学家,都不擅长正确实施加密。虽然没有太多出错的余地,但您可以使其潜在地不安全。正如我所说,这是基于意见的。
-
@YahyaUddin 您发布了一个指向相当低级函数的链接,该函数允许您选择自己的密码。这可能会变坏,具体取决于您如何实现它。如果您想阅读更长的内容,这是一个经典的解释If You’re Typing the Letters A-E-S Into Your Code You’re Doing It Wrong。基本上,高水平的东西几乎总是更好的选择。并且私钥上的密码是相当高级别的。
标签: php security rsa public-key-encryption private-key