
密碼算法,稱為加密算法,是用來加密和解密的數學函數。為給明文信息加密,用加密算法函數。為給密文信息解密,用解密算法函數。
如果算法的安全性基於算法工作的保安,這是一個受約算法。受約算法只是歷史上曾被注意,可惜不適合今日的要求。大的或變動着的用戶團體不能使用它們,因為每次一個用戶離開了,團體中的每一個人必須改換不同的算法,如果團體中某個人偶然泄漏了秘密,其他每一個人也必須更換算法.
更糟的是受約算法無質量控制和標準。每一個用戶團體必須有他們自己獨特的算法。他們不能用現成的硬件或軟件產品,因為竊聽者可以購買同一商品並弄清算法,從而不得不設計自己的算法並付之實現。如果該團體中沒有很好的密碼員,他們將不清楚所用的算法是否安全。儘管這樣,對低安全性的應用來講,受約算法還是非常有效的。
近代密碼術用密鑰來解決安全性問題。密鑰用K表示,它可以是任何一個大數。這個密鑰能取許多值中的一個。密鑰的取值範圍稱為密鑰空間密鑰可同時用於加密和解密,那麼加密和解密函數表示為EK(M)=C。
如果加密密鑰和解密密鑰是相同的,則這兩個函數具有以下性質 D(EK(M))=M,某些算法用不同的加密密鑰和解密密鑰。即,加密密鑰K1,解密密鑰K2。在這種情況EK: (M)=C DK:(Ex(M))=M.
密鑰決定了這些算法的安全性,而不是算法的內容。所以人們儘管可以發表和分析算法,用算法可以製造大量商品,即使竊聽者知道算法,但若不知特有的密鑰仍不能讀取信息。一個密碼系統應包括算法以及所有可能的明文密文和密鑰。
