對稱密鑰加密
對稱密鑰加密(英語:Symmetric-key algorithm)又稱為對稱加密、私鑰加密、共享密鑰加密,是密碼學(xué)中的一類加密算法。這類算法在加密和解密時使用相同的密鑰,
或是使用兩個可以簡單地相互推算的密鑰。實務(wù)上,這組密鑰成為在兩個或多個成員間的共同秘密,以便維持專屬的通信聯(lián)系。與公開密鑰加密相比,要求雙方獲取相同的密鑰是對稱密鑰加密的主要缺點之一[2]。
常見的對稱加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。
對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密
公開密鑰加密
公開密鑰加密(英語:Public-key cryptography),也稱為非對稱加密(英語:asymmetric cryptography),是密碼學(xué)的一種算法,它需要兩個密鑰,一個是公開密鑰,另一個是私有密鑰;一個用作加密的時候,
另一個則用作解密。使用其中一個密鑰把明文加密后所得的密文,只能用相對應(yīng)的另一個密鑰才能解密得到原本的明文;甚至連最初用來加密的密鑰也不能用作解密。由于加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;
不同于加密和解密都使用同一個密鑰的對稱加密。雖然兩個密鑰在數(shù)學(xué)上相關(guān),但如果知道了其中一個,并不能憑此計算出另外一個;因此其中一個可以公開,稱為公鑰,任意向外發(fā)布;不公開的密鑰為私鑰,必須由用戶自行嚴(yán)格秘密保管,
絕不通過任何途徑向任何人提供,也不會透露給要通信的另一方,即使他被信任
基于公開密鑰加密的特性,它還提供數(shù)字簽名的功能
bcrypt
bcrypt是一個跨平臺的文件加密工具。由它加密的文件可在所有支持的操作系統(tǒng)和處理器上進(jìn)行轉(zhuǎn)移。它的口令必須是8至56個字符,并將在內(nèi)部被轉(zhuǎn)化為448位的密鑰。然而,所提供的所有字符都具有十分重要的意義。密碼越強大,您的數(shù)據(jù)就越安全。
除了對您的數(shù)據(jù)進(jìn)行加密,默認(rèn)情況下,bcrypt在刪除數(shù)據(jù)之前將使用隨機數(shù)據(jù)三次覆蓋原始輸入文件,以阻撓可能會獲得您的計算機數(shù)據(jù)的人恢復(fù)數(shù)據(jù)的嘗試。如果您不想使用此功能,可設(shè)置禁用此功能
bcrypt使用的是布魯斯·施內(nèi)爾在1993年發(fā)布的Blowfish加密算法。具體來說,bcrypt使用保羅·柯切爾的算法實現(xiàn)。隨bcrypt一起發(fā)布的源代碼對原始版本作了略微改動。
Blowfish
Blowfish是一個對稱加密塊算法,由Bruce Schneider于1993年設(shè)計,現(xiàn)已應(yīng)用在多種加密產(chǎn)品。Blowfish能保證很好的加密速度,并且目前為止沒有發(fā)現(xiàn)有效地破解方法。目前為止AES比Blowfish有更廣的知名度。
Schneider 設(shè)計的Blowfish算法用途廣泛,意在摒棄DES的老化以及其他算法的強制捆綁。Blowfish剛剛研發(fā)出的時候,大部分其他加密算法是專利所有的或?qū)儆谏虡I(yè)(政府)機密,所以發(fā)展起來非常受限制。Schneider 則聲明 Blowfish 的使用沒有任何限制,任何國家任何人任何時候都可以隨意使用 Blowfish算法。
Blowfish 主要包括關(guān)鍵的幾個S盒和一個復(fù)雜的核心變換函數(shù)。
柯克霍夫原則
密碼學(xué)上的柯克霍夫原則(Kerckhoffs's principle,也稱為柯克霍夫假說、公理、或定律)系由奧古斯特·柯克霍夫在19世紀(jì)提出:即使密碼系統(tǒng)的任何細(xì)節(jié)已為人悉知,只要密匙(key,又稱密鑰或密鑰)未泄漏,它也應(yīng)是安全的
柯克霍夫為軍用保密器所設(shè)計的這六個原則是:
- 即使非數(shù)學(xué)上不可破解,系統(tǒng)也應(yīng)在實質(zhì)(實用)程度上無法破解。
- 系統(tǒng)內(nèi)不應(yīng)含任何機密物,即使落入敵人手中也不會造成困擾。
- 密匙必須易于溝通和記憶,而不須寫下;且雙方可以容易的改變密匙。
- 系統(tǒng)應(yīng)可以用于電訊。
- 系統(tǒng)應(yīng)可以攜帶,不應(yīng)需要兩個人或以上才能使用(應(yīng)只要一個人就能使用)。
- 系統(tǒng)應(yīng)容易使用,不致讓用戶的腦力過分操勞,也無需記得長串的規(guī)則。