2013-04-28 33 views
0

做了一些關於加密和一些利弊的研究。我有一個非常有效的登錄系統,它使用命令參數將用戶信息傳遞給sql字符串以嘗試並避免sql注入。然而,我的下一個目標是在創建時加密密碼,然後將其存儲在數據庫中。C#MD5和/或其他加密oledb(訪問2007)

我在C#編程,使用Visual Studio 2010旗艦版和Access 2007

我不是在尋找一個直線上升的答案雖然如果有人給了我一個我難道不抱怨,但如果有人能ATLEAST點我在正確的方向,這將是非常感謝! :d

類Regads,尼克

+0

使用緩慢(迭代)散列和鹽。單次迭代哈希是不好的,即使它是SHA-2。請參閱[如何安全地哈希密碼?](http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords)。在C#中,最簡單的解決方案是使用[Rfc2898DeriveBytes](http://msdn.microsoft.com/zh-cn/library/system.security.cryptography.rfc2898derivebytes.aspx),並至少進行10000次迭代。 – CodesInChaos 2013-04-28 11:39:04

回答

1

你應該看看使用安全散列算法(SHA)與鹽。

在此上下文中散列算法的目的是存儲代表用戶密碼的令牌。你不會實際存儲密碼,理想情況下,你不應該以明文形式重新創建用戶密碼。

當進行登錄嘗試時,您將通過相同的進程傳遞提供的密碼並查看哈希值是否匹配。

+0

Thaks迴應,sha-1和sha-256之間有什麼區別嗎?我將假定256是轉換爲的位數 – 2013-04-28 11:16:38

+1

有很多可用的SHA版本。 SHA-1是一個160位標準,有一些缺點。 SHA-256是SHA-2標準的一部分。關於http://en.wikipedia.org/wiki/Secure_Hash_Algorithm有一個很好的概述。請務必記住,如果您對安全性不滿意,並且如果您試圖保護重要數據,您確實需要花點時間研究一下,安全性確實很難變得正確。在twit網絡上有一個名爲securitynow的偉大播客,有一些非常好的討論。哦,是的,256會反映散列值的大小。 – 2013-04-28 11:21:18

+0

非常感謝!非常豐富:D – 2013-04-28 11:24:23