2016-07-31 23 views
0

我發現Python包加密了一些數據和看到this在Python密碼學:對稱密碼學中密碼的用途是什麼?

,能夠使用密碼與Fernet(對稱密鑰)。爲此,您需要通過密鑰派生函數(例如PBKDF2HMAC,bcrypt或scrypt)來運行密碼。

但事實證明,密碼的工作方式與密鑰相同(使用密碼/密鑰進行解密)。那麼爲什麼要使用密碼而不是密鑰呢?

我的意思是,爲什麼不直接使用密鑰本身:

from cryptography.fernet import Fernet 
key = Fernet.generate_key() 
token = Fernet(key).encrypt(b"my deep dark secret") 
Fernet(key).decrypt(token) 

回答

6

密碼是什麼,能夠被人記住,而一鍵通常不記得,因爲它是長期(至少128位或十六進制編碼爲32個字符),應該是真正的隨機(與隨機噪聲無法區分)。如果你想用密鑰對某些東西進行加密,但是這個密鑰不能通過非對稱加密技術傳輸,而應該通過電話提供,否則不應該在任何地方寫入,那麼你不能簡單地生成一個隨機密鑰並使用它。您需要有一個密碼/密碼才能從中獲取密鑰。

實施例1:

一種個人密碼安全等KeePass的需要爲加密/解密的密鑰。用戶將無法簡單地記住該密鑰,因此我們有一個更短的密碼,可以記住。現在,安全性在於使用密鑰派生函數來從密碼派生密鑰,所以攻擊者仍然難以強制密鑰,即使密鑰取決於更短的密碼。

示例2:

您壓縮文檔並使用壓縮軟件的加密。現在您可以通過電子郵件發送容器,但不能隨密碼一起發送密碼。所以,你打電話給你發送電子郵件的人並告訴他們密碼。以這種方式傳輸密碼比傳統密鑰更容易傳輸。

相關問題