2012-09-04 82 views
0

我正在爲使用bcrypt和AES的移動設備實現登錄機制。用戶必須使用密碼進行登錄,然後使用密碼進行散列,並與數據庫中的散列進行比較。當然,登錄交易將通過SSL進行,服務器將被配置爲僅提供SSL。這部分非常簡單。.Net AES實現

但是,我也想存儲一個cookie,以便用戶不必每次都登錄。該cookie將在24小時後自動從設備中刪除。我打算存儲由日期時間戳和bcrypt散列組成的AES加密字符串。 AES實施是我遇到困難的地方。我打算使用Encryptamajig,它是「.NET .NET加密算法功能的簡單包裝」,但後來我看到其上的this issue尚未修復。 (這個問題與使用相同的派生函數來生成IV作爲關鍵)有關。

我的問題是,這是一個巨大的問題,應該阻止我使用這個包裝?我的密碼學知識正在增加,但仍然相對較低;但是,如果我理解正確,這是接近同樣的問題,使WEP很容易破解)

如果是,是否有最佳/最好的做法使用.Net的AES Class?看來,目前在SO上的大部分答案都比較老,根本不涉及AES課。

回答

2

IMO的cookie應該是存儲在數據庫的自動登錄表中的隨機令牌。然後,您可以在不更改用戶密碼的情況下使這些令牌無效。

在.net上使用AES時,我會使用內置類之一,或者Rijndael,塊大小爲128或Aes。如果我需要額外的速度,我只能使用其他實現(加密類中的構建通常很慢)。

+0

AES類是我正在計劃使用的,它似乎有不安全的方式去使用它與IV代。我喜歡令牌的想法。這樣做的一個好方法是將標記存儲在數據庫中以及它的時間戳,以便如果令牌在一段時間後通過,它是無效的?在此之後的任何登錄中,令牌和時間戳將被簡單地重新生成。 – servarevitas3

+0

包含令牌,用戶標識和時間戳的三列表似乎是個不錯的主意。當用戶更改密碼時,不要忘記使令牌失效(簡單地刪除它們)。當然是 – CodesInChaos

+0

。謝謝。在這一點上,AES的使用似乎是過度殺傷。 – servarevitas3