使用不断变化的哈希值有多安全,比如时间?

How secure is using a changing hash, like the time?

如果我在 php 中做这样的事情:

$server_key = md5( '00' . date( 'i' ) . '09' );

并提交一个 html 表单,其中包含以 md5 编码的日期(秒)(加上前后的哈希值):

这个容易破解吗?

由于问题下方评论中的信息,我假设在几秒钟内使用 MD5 哈希值作为身份验证方法。


不,这被认为是不安全的,因为

  • 它打破了Kerckhoff's principle:算法本身应该被考虑public,任何人都可以在没有获得secret/key的情况下实现算法;
  • 很容易遍历所有秒数,例如一年并在服务器上测试所有可能性;
  • 时间已经被观察到创建连接的攻击者捕获,或者可以通过简单地查看时钟轻松猜出;

MD5 也是不安全的甚至在这里都没有发挥作用(并且很难对该协议进行攻击)。