2013-03-03 28 views
1

我正在研究CMS系統,我想添加一項功能來保護用戶的數據。當然密碼是散列的,只能用暴力破解來解碼。但現在是關於其餘的數據,例如他們的郵件地址。我想有一個函數,它在用戶註冊時可以編碼一個郵件地址,每次發送郵件時都可以對其進行解碼。現在哈希的問題是,你不能輕易地將其轉換回來(我認爲),至少使用md5和sh1以及類似的算法,這是不可能的,所以這不是我想要的。用戶數據保護與編碼和解碼?

我想有一個功能,鹽可以在en和解碼過程中使用。這意味着我有一個隨機字符串存儲在Web應用程序的某個地方,這個字符在這個過程中被用作'seed'或'salt',所以如果隨機字符串不同,結果將會不同,這使得難以解碼一次黑客(例如)闖入數據庫並竊取數據。

我在PHP中看到了一個名爲base64_encode()base64_decode()的函數,這些函數可以很容易地對數據進行解碼和解碼。這些功能的問題是沒有'鹽'參數,我認爲它不是很好的保護。是否有一個功能可以通過en-and decode功能和salt參數來實現更多保護功能?

由於提前, 添VISEE

+0

嗯......解碼和編碼一切都會對性能產生影響。最重要的是:你必須在前端編碼,這隻能通過任何人都可以閱讀的JS完成。也許你應該去SSL加密 – 2013-03-03 13:44:06

+0

起初,我錯了我的意思是'加密',這就是爲什麼我沒有找到我的答案,我認爲,英語不是我的本地語言......順便說一句,你爲什麼認爲我需要例如使用Javascript解密或解密客戶端上的內容?它可以在我想的所有服務器上完成。加密不能用於安全地將數據發送到瀏覽器,那麼我將使用SSL來代替。 – 2013-03-03 15:18:34

回答

3

讓我解釋一下你和加密編碼之間的差異,散列。

  • 編碼只是表示數據的一種方式,因此它不能幫助您提高安全性。 base64用於將8位數據表示編碼爲6位,即用於在電子郵件主體中傳送。對你沒用。
  • 哈希是一個單向數據轉換通常與這些屬性:
    • 許多(實際上是無限)不同的數據字符串具有相同的散列。您可以散列任意長度的字符串,但生成的散列總是限制長度,所以很乾淨,並不是每個輸入字符串都可以具有唯一的散列。
    • 雖然散列速度很快,但用指定散列猜測原始數據不能比嘗試所有可能的組合更簡單。
    • 加密是你在找什麼。加密數據只能用適當的密鑰讀取。

不過,我沒有看到在您的數據庫中的數據進行加密大了點。如果有人看到您的PHP源代碼和數據庫,他可以輕鬆讀取密鑰並解密數據。它只能幫助你,如果有人竊取了原始數據庫,但仍然無法訪問你的源代碼,但這種情況非常罕見,網絡程序員通常不會這樣做。

+0

我的不好,我的意思是加密。英語不是我的母語,所以這是我的錯。關於加密,它不僅適用於數據庫,它還將用於許多其他需要加密的東西。我將刪除這個問題,並看看'加密'。 感謝您的答案btw。 – 2013-03-03 15:16:19

+1

歡迎你。重要的是你想要加密什麼以及你想保護它的人 - 隨機的網絡訪問者,黑客竊取你的代碼/數據庫或嗅探器收聽網絡通信。 – amik 2013-03-03 17:33:59