建議119:不要使用自己的加密算法
很多人認爲自己寫的加密算法纔是安全的,因爲該算法只有“自己知道”。很遺憾,這是大錯特錯。
首先,我們不是祕密學專家,如果我們隨隨便便寫個算法就稱得上是加密算法的話,那麼世界上就不會存在“密碼學”這個專門的學科了。
其次,應當記住的是:讓數據安全的不是加密算法本身,而是密鑰。
當今世界上有許多流行的加密算法都是公開源碼和邏輯的,如DES、AES、RC4、RSA、TEA、MD5等。試圖讓算法保密是不可能的。各類源碼分析工具和內存分析工具都可以通過程序的執行過程反編譯出程序的算法與邏輯。所以,理論上說,只要肯花時間,沒有不可破解的算法。
其實,密鑰纔是關鍵。我們要始終確保密鑰的安全,而不是徒勞地去創建算法。商業團隊應該建立專門的機構和人員管理密鑰。應用程序則應該負責保護並隱藏密鑰,而不是將進入系統的密鑰存儲在隨處可見的位置。
轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技