《《用戶權(quán)限管理》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《用戶權(quán)限管理》PPT課件.ppt(25頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 本 講 內(nèi) 容權(quán)限管理的實(shí)現(xiàn)思路Windows應(yīng) 用 程 序 中用 戶 權(quán) 限 管 理 的 實(shí) 現(xiàn)主 講 : 屠 添 翼案例:高校教學(xué)管理系統(tǒng)用戶密碼加密存儲(chǔ) v在Windows應(yīng)用程序中能夠完成用戶權(quán)限管理的設(shè)計(jì)與開發(fā)。教 學(xué) 目 標(biāo)教 學(xué) 重 點(diǎn)教 學(xué) 難 點(diǎn) v鹽值和散列v多層實(shí)體v權(quán)限管理實(shí)現(xiàn)的思路v用戶密碼加密存儲(chǔ) -角色權(quán)限- 數(shù)據(jù)庫結(jié)構(gòu) v byte bytePassword = null;v / 創(chuàng)建新的加密服務(wù)提供程序?qū)ο髒 SHA1 sha1 = SHA1.Create();v / 將原始字符串轉(zhuǎn)換成字節(jié)數(shù)組,然后計(jì)算散列,并返回一個(gè)字節(jié)數(shù)組v bytePassword
2、= sha1.ComputeHash(Encoding.Unicode.GetBytes(Rickie);v / 釋放資源 v sha1.Clear();v / 返回散列值的Base64 編碼字符串v Console.WriteLine( Convert.ToBase64String(bytePassword); v如 此 可 見 , 輸 入 字 符 串 的 一 個(gè) 小 小 變 化 就 會(huì)產(chǎn) 生 完 全 不 同 的 字 符 組 合 。 這 正 是 散 列 算 法之 所 以 有 效 的 原 因 , 它 使 我 們 很 難 找 到 輸 入字 符 串 的 規(guī) 律 , 也 很 難 根 據(jù) 加 密 后
3、的 字 符 弄清 楚 字 符 串 原 來 的 模 樣 。 v byte bytePassword = null;v string tmpPassword = txtPassword.Text.Trim();v MD5 md5 = MD5.Create();v bytePassword = md5.ComputeHash(Encoding.Unicode.GetBytes(tmpPassword);v / Releases all resources used by the System.Security.Cryptography.HashAlgorithm. v md5.Clear();v t
4、xtResults.Text = Convert.ToBase64String(bytePassword); v如 果 兩 個(gè) 用 戶 碰 巧 使 用 相 同 的 密 碼 , 那么 散 列 值 將 完 全 相 同 。 如 果 黑 客 看 到 您存 儲(chǔ) 密 碼 的 表 格 , 會(huì) 從 中 找 到 規(guī) 律 并 明白 您 很 可 能 使 用 了 常 見 的 詞 語 , 然 后 黑客 會(huì) 開 始 詞 典 攻 擊 以 確 定 這 些 密 碼 。 v要 確 保 任 何 兩 個(gè) 用 戶 密 碼 的 散 列 值 都 不 相 同 ,一 種 方 法 是 在 加 密 密 碼 之 前 , 在 每 個(gè) 用 戶 的密 碼
5、 中 添 加 一 個(gè) 唯 一 的 值 。 這 個(gè) 唯 一 值 稱 為“ 鹽 ” 值 ( Salt) 。 v思 考 : 在 驗(yàn) 證 密 碼 時(shí) , 如 何 得 到 這 個(gè) “ 鹽 ”值 。 v byte saltValue = new bytesaltLength;v RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();v /用 加 密 型 強(qiáng) 隨 機(jī) 字 節(jié) 填 充 的 數(shù) 組v rng.GetBytes(saltValue); v byte rawSalted = new byteunsaltedPassword.Len
6、gth + saltValue.Length; vv unsaltedPassword.CopyTo(rawSalted,0);v saltValue.CopyTo(rawSalted,unsaltedPassword.Length);vv SHA1 sha1 = SHA1.Create();v byte saltedPassword = sha1.ComputeHash(rawSalted);v v byte dbPassword = new bytesaltedPassword.Length + saltValue.Length;v saltedPassword.CopyTo(dbPassword,0);v saltValue.CopyTo(dbPassword,saltedPassword.Length); password unsaltedPasswordSH A1 saltValue rawSalted SaltedPassword dbPassword 隨機(jī)生成合并合并SH A120 2442024 password unsaltedPasswordSH A1 saltValue SaltedPassword dbPassword 分解2024 4 rawSalted 合并24SaltedPassword 比較合并