我將密碼和用戶登錄一起散列,並將其作爲VARBINARY長度保存在數據庫中。訪問散列密碼
現在,我正在嘗試在asp.net中構建登錄頁面。我怎樣才能從數據庫中獲取密碼值,並將其與用戶提供的密碼值進行比較?我使用SqlDataReader來讀取數據庫。
問候,
巴爾託什
我將密碼和用戶登錄一起散列,並將其作爲VARBINARY長度保存在數據庫中。訪問散列密碼
現在,我正在嘗試在asp.net中構建登錄頁面。我怎樣才能從數據庫中獲取密碼值,並將其與用戶提供的密碼值進行比較?我使用SqlDataReader來讀取數據庫。
問候,
巴爾託什
你創建一個散列(用與創建初始散列相同的算法),在用戶輸入並在db中搜索密碼的情況下(如果散列與初始散列相同) - >是的,它是相同的密碼
散列的想法是有一個不可退回的功能 - >你可以檢查它是否相同,但你永遠不能重建輸入數據。
這就是我想要做的。但是,如何將包含我散列密碼的閱讀器[「密碼」]轉換爲字節[]以進行比較? – Bartosz
您需要將這些文件存儲在包含帶有用戶名的列的表格中,以明文形式顯示,以便您可以根據嘗試登錄的用戶獲取哈希值。並將散列輸入與散列存儲的輸入進行比較。
我確實有明文保存在數據庫中的用戶名。其採購散列密碼並將其轉換爲字節[],以供比較,我無法做到。 – Bartosz
作爲RB。說,你檢索從數據庫傳遞的散列。然後你使用用戶提供的密碼,並使用之前使用的哈希算法對其進行哈希處理。如果數據庫中的散列碼與用戶輸入的密碼的散列碼相匹配,那麼密碼是正確的。
這就是我想要做的。但是,如何將包含我散列密碼的閱讀器[「密碼」]轉換爲字節[]以進行比較? – Bartosz
看看類似的問題。有代碼來編寫散列字節。 http://stackoverflow.com/questions/2687196/asp-net-membership-c-sharp-how-to-compare-existing-password-hash – tranceporter
有關散列與加密的信息:[散列密碼和加密它之間的區別](http://stackoverflow.com/questions/326699/difference-between-hashing-a-password-and-encrypting-it?rq = 1) –
不要忘記添加[salt](http://en.wikipedia.org/wiki/Salt_(cryptography)) –