2010-12-12 64 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' ))。如果不是,則鏈接舊。