我正在尋找爲IMAP和SMTP服務器實現CRAM-MD5身份驗證。問題在於CRAM似乎需要一個明文密碼隨時可用。服務器向客戶端發送一個獨特的挑戰和客戶端返回:CRAM-MD5實現
MD5(MD5(password, challenge), MD5(password))
我看不到的方式來檢查這個無需明文密碼,該規範並沒有說出來有有一個可用但它似乎是合乎邏輯的。
我能想出的唯一解決方案是將密碼加密(正確加密,而不是散列)到數據庫中(可能使用基於RSA密鑰的AES,因爲我已經有一些東西需要處理),並且在解密時需要比較,似乎是一個非常緩慢的方法,因爲它需要對SMTP和IMAP上的每個單一登錄進行解密和哈希處理。
這是最好的解決方案/最有效的解決方案嗎?
或者更好,現在CRAM已經過時了,因爲現在使用SSL來保護線路上更安全的身份驗證?
希望您已經將它寫入python,這就是我正在寫的:p。 這似乎是最好的解決方案。保持密碼的安全性(只要MD5可以)。所以我可以使用我的加密方法,然後仍然能夠提供CRAM MD5功能。 – Paystey
這可能比以純文本存儲密碼更好,因爲在多個地方使用相同密碼的用戶可能受到的影響較小,但數據庫仍包含登錄所需的所有內容。 CRAM難以避免。 –