2017-07-28 214 views
0

check_password_hash花費的時間比預期長得多。用Werkzeug 0.12和0.9進行測試。下面的測試顯示,檢查密碼大約需要2秒。爲什麼需要這麼長時間?werkzeug.security.check_password_hash花費的時間太長

該項目使用GAE -google應用程序引擎。它部署在GAE上。不確定GAE是否有可能會覆蓋已安裝的庫的werkzeug庫。我用的是GAE SDK版本50年1月9日

def verify_password(self, password): 
    logging.info(self.password_hash) 
    logging.info(str(datetime.now())) 
    result = check_password_hash(self.password_hash, password) 
    logging.info(str(datetime.now())) 
    return result 
hash:pbkdf2:sha256:...................................... 
2017-07-28 13:52:14.904270 
2017-07-28 13:52:17.041060 

=================編輯1 ========== == 好吧,似乎我沒有完全清除我的庫文件夾。我已經嘗試了多次,從Werkzeug == 0.9.6升級到Werkzeug == 0.12解決了這個問題。降級到0.9.6會將問題返回。

只解決了我的機器上的問題。在GAE服務器上,延遲仍然存在。 =================編輯2 ============ 創建非常簡約的項目後,我再次測試,並在GAE上的行爲是相同的。然後我看到在我的數據庫中有兩種密碼:一種是sha1,另一種是sha256。那些sha1也在GAE上工作得很快。

+1

我無法重現您的問題。請[edit]包含[mcve]。 – davidism

回答

1

一開始我以爲這個問題是因爲s​​ha1和sha256之間的區別。真正的問題來自創建密碼時使用的迭代次數。 http://werkzeug.pocoo.org/docs/0.12/utils/#werkzeug.security.generate_password_hash

使用此功能可以使密碼重新快速解碼。

generate_password_hash(password, method='pbkdf2:sha256:200') 

在數據庫中我有兩種類型的密碼,可能是因爲我升級了這個庫運行時。

pbkdf2:sha1:1000$....... 
pbkdf2:sha256:50000$...... 

所以第一個和第二個之間的差異是巨大的,因爲1000 vs 50000迭代。