我想就我需要發送用戶和密碼組合的任何移動應用程序構建的流程發表一些意見。 我的想法是使用AES-256加密密碼,生成一個隨機密碼和IV來生成密鑰。這個想法是,當第一次生成密碼時,它會向服務器發送加密密碼和IV。 IV和加密的密碼將被存儲在服務器上,在redis DB中,並且密鑰和加密的密碼將僅在移動設備上(IV不會被存儲在設備上)。因此,每次用戶需要登錄時,發送給服務器,加密的密碼和密鑰,在存儲了IV的情況下,服務器使用剛剛發送的密鑰和IV發送的密鑰解密發送的加密密碼和保存在數據庫中的密碼已經在服務器上。流從移動設備發送加密密碼到服務器
如果用戶想要更改密碼,則會再次生成加密的密碼,密鑰和IV,並且如果它們匹配,也會發送舊密碼(密鑰和加密密碼),值將在服務器中更新併發送通知給客戶也更新它們。
所有這些交易都將發生在SSL隧道內部。
你覺得這樣很安全嗎?如果不是爲什麼?任何其他選項來從移動設備到服務器以安全的方式加密/解密密碼?
問候。
爲什麼您需要存儲加密的密碼?存儲散列有什麼問題? – Eric 2013-02-14 19:42:16
你的意思是使用河豚?爲什麼sha1不安全,據我所知 – 2013-02-14 19:53:45
是什麼? blowfish和sha1都是哈希算法,而不是加密密碼。我建議使用pbkdf-2,bcrypt或scrypt來存儲密碼散列,而不是存儲加密的密碼。 – Eric 2013-02-14 20:07:34