【问题标题】:PHP - Using a Unix Timestamp as a key?PHP - 使用 Unix 时间戳作为键?
【发布时间】:2011-11-21 14:24:15
【问题描述】:

所以,我最近一直在研究加密,我听说有人使用时间戳作为加密密钥。我认为这是一个好主意,但如果我想解密数据,我将如何检索那个特定的时间戳?时间戳是独一无二的,我不确定它是如何工作的。

编辑: 我正在使用 PHP 和 MYSQL

【问题讨论】:

  • 将其存放在某处并使用。顺便说一句,这是个糟糕的主意。

标签: php encryption hash timestamp aes


【解决方案1】:

呃,通常时间戳被用作生成密钥的基础——而不是密钥本身。如果您希望能够解密数据,则必须存储密钥以供以后使用。

【讨论】:

【解决方案2】:

这里有两个问题。

您需要将时间戳存储在某处。那么为什么不直接使用“rand()”并存储它呢。

在现代多线程、多核处理器上可以获得数百个重复的时间戳。所以你也可以直接使用 date()。

【讨论】:

  • 不应假定 RNG 具有加密质量,除非它被明确记录在案。 (与常规 RNG 相比,加密质量的 RNG 会非常慢。任何语言中的默认 RNG 永远不会具有加密质量。)您应该只使用加密质量的 RNG 来生成加密密钥。
【解决方案3】:

唯一的方法是保存时间戳。 (假设您的加密没有后门,这将使其目的无效)

我要做的是以不同的格式保存时间戳和加密字符串,例如:09/21/2011 03:09:53,并结合使用strtotime() 和加盐将这两个信息位存储在一个安全的庄园中。

09/21/2011 03:09:53 变为 13165--Salt--74593

【讨论】:

    【解决方案4】:

    时间戳使 糟糕 键。一个程序可以在眨眼之间完成所有可能的键。

    这个时候经常使用一个组件来启动一个随机数生成器。但是,它不能是唯一的组件,因为它不能用作键。

    时间可以半成功地用作散列算法的盐。它仍然不如随机的东西,因为它允许攻击者提前生成彩虹表。

    【讨论】:

      【解决方案5】:

      我不想伤害你的感情,但是……

      很明显你从来没有学过密码学。

      所以, 不要设计自己的密码协议,也不要自己组装密码原语(就像“WiFi”设计师/业余密码学家对 WEP 所做的那样) .

      专为满足特定安全目标而设计的协议(我并不是故意说“安全协议”)已由专家发明和实施。

      您首先需要定义您的安全目标,然后选择适当的协议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-08
        • 2011-06-02
        • 1970-01-01
        • 2012-08-24
        • 2019-09-02
        • 2013-03-13
        相关资源
        最近更新 更多