2010-12-12 66 views
0

我服务从我的网站,这是超过1 MB的大小几个MP3文件。我怀疑其他人正在盗链,因为我的CDN费用没有太大的差别。简单快速的双向加密在php

我正在寻找一个简单的加密,以便我可以每3-4小时更改一次文件名。我对快速双向算法比加密强度更感兴趣。有人可以为此提出一个快速加密。

使用mcrypt快速加密?

+7

不要生我的气,但你不觉得改变文件的名字是解决这个问题的错误方法吗?如果只有请求者被允许(通过检查会话或其他东西)才能创建一个脚本(PHP)来处理文件呢? – Poni 2010-12-12 07:01:08

+0

我同意Poni。 +您可以检查引荐人或使用验证码。 – fardjad 2010-12-12 07:08:19

+0

我总是开放的建议:)。我无法执行任何推荐或会话验证,因​​为这些文件是从CDN提供的。由于我配置了原始拉取,只有第一个请求被传递到我的服务器,当它被加载到CDN。 – 2010-12-12 07:11:03

回答

2

我不清楚为什么要为此加密。这听起来像你只是想要一种方式来产生一个不可预测的链接,除了你。采用密钥的HMAC,时间戳和文件标识符应该为你做。然后,您可以使HMAC成为文件名的一部分,以及时间戳和文件标识符。通过再次计算HMAC并在URI中检查它,在PHP脚本中验证它们。

HMAC不是加密,它实际上是认证/完整性,但是它在与合理散列一起使用时是安全的。通常情况下,我建议使用SHA-256或更好,但是对于您所做的MD5听起来足够安全。查找HMAC-MD5代码应该不成问题。除非您生成LOTS(每小时数百万)链接,否则MD5速度不会成为问题。

(在这种情况下,认证/完整性意味着HMAC只能由拥有您的密钥的人员以及公共时间戳&文件标识符生成)。

+0

谢谢德罗伯特。这是一个更好,更干净的解决方案。 – 2010-12-12 15:24:45

1

我会去与哈希改变(区间)MD5 =>http://phpsec.org/articles/2005/password-hashing.html

+0

MD5不起作用,因为如果有人获得了文件名,那么他们可以随时访问它。我不想重命名我的服务器上的文件。 – 2010-12-12 15:21:25

+0

you hash the md5 – Alfred 2010-12-12 20:36:32

+0

我上次不明白你的回复。我虽然你指的是哈希完整的文件名。谢谢。 – 2010-12-14 05:08:58

1

你可以使用SHA1哈希(或另一种)的MD3加密日期(或类似的东西)。加密直到0:00有效的字符串的日期。使用sha1(日期('Y-m-d-H'))每小时获得一个新密钥。

有人访问与http://domain.com/&^CYFG & ^%U^^ GU VUVUIVB/filename.zip的文件,你是否&^CYFG & ^%U^^ GU等于VUVUIVB SHA1(日期( 'YMD-H' ))。如果不是,则链接旧。