《用戶權(quán)限管理》PPT幻燈片_第1頁
《用戶權(quán)限管理》PPT幻燈片_第2頁
《用戶權(quán)限管理》PPT幻燈片_第3頁
《用戶權(quán)限管理》PPT幻燈片_第4頁
《用戶權(quán)限管理》PPT幻燈片_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、1,本講內(nèi)容,權(quán)限管理的實現(xiàn)思路,.NET框架編程技術(shù),Windows應用程序中 用戶權(quán)限管理的實現(xiàn),6,主講:屠添翼,案例:高校教學管理系統(tǒng),用戶密碼加密存儲,2,在Windows應用程序中能夠完成用戶權(quán)限管理的設計與開發(fā)。,教學目標,教學重點,教學難點,鹽值和散列 多層實體,權(quán)限管理實現(xiàn)的思路 用戶密碼加密存儲,3,一、權(quán)限管理的實現(xiàn)思路,用戶 角色 權(quán)限,4,-角色-,管理員 來自教師資料 教務人員 來自教師資料 教師 來自教師資料 學生 來自學生資料,5,-權(quán)限-,教師資料管理查詢(0)、管理(1) 學生資料管理查詢(2)、管理(3) 課程資料管理查詢(4)、管理(5) 教學任務分配查

2、詢(6)、管理(7) 教學計劃安排查詢(8)、管理(9) 考試成績管理查詢(10)、錄入(11)、修改(12) 用戶權(quán)限管理查詢(13)、管理(14) 數(shù)據(jù)備份 備份(15)、還原(16),6,-角色權(quán)限-,教師資料管理查詢(0)、管理(1) 學生資料管理查詢(2)、管理(3) 課程資料管理查詢(4)、管理(5) 教學任務分配查詢(6)、管理(7) 教學計劃安排查詢(8)、管理(9) 考試成績管理查詢(10)、錄入(11)、修改(12) 用戶權(quán)限管理查詢(13)、管理(14) 數(shù)據(jù)備份 備份(15)、還原(16),7,三個狀態(tài),1:允許項 0:可選項 -1:禁止項,8,數(shù)據(jù)庫結(jié)構(gòu),9,10,二

3、、用戶密碼加密存儲,思考: 大多數(shù)開發(fā)人員使用數(shù)據(jù)庫存儲密碼,如果密碼直接以明文的形式存放在數(shù)據(jù)庫中,則系統(tǒng)很不安全。,11,散列,散列簡介 散列(Hash)是一種單向算法,一旦數(shù)據(jù)被轉(zhuǎn)換,將無法再獲得其原始值。 可以使用散列算法對密碼進行加密,然后再將其存儲在數(shù)據(jù)庫中。 思考:驗證用戶密碼的流程是怎樣?,12,散列,用戶輸入密碼后,可以再次使用散列算法對其進行轉(zhuǎn)換,然后將其與存儲在數(shù)據(jù)庫中的散列進行比較。,13,散列,散列的特點之一是,即使原始數(shù)據(jù)只發(fā)生一個小小的改動,數(shù)據(jù)的散列也會發(fā)生非常大的變化。Rickie 和 Ricky 這兩個單詞非常相似,但使用散列算法加密后的結(jié)果卻相差甚遠。你可

4、能根本看不出二者之間有什么相似之處。,14,散列,.NET 開發(fā)人員可以使用多種散列算法類。最常用的是 SHA1 和 MD5。下面我們看一下如何為Rickie這樣的普通字符串生成散列,使任何人都無法識別它。,15,(1)使用 SHA1 生成散列,byte bytePassword = null; / 創(chuàng)建新的加密服務提供程序?qū)ο?SHA1 sha1 = SHA1.Create(); / 將原始字符串轉(zhuǎn)換成字節(jié)數(shù)組,然后計算散列,并返回一個字節(jié)數(shù)組 bytePassword = sha1.ComputeHash(Encoding.Unicode.GetBytes(Rickie); / 釋放資源

5、sha1.Clear(); / 返回散列值的Base64 編碼字符串 Console.WriteLine( Convert.ToBase64String(bytePassword);,16,如此可見,輸入字符串的一個小小變化就會產(chǎn)生完全不同的字符組合。這正是散列算法之所以有效的原因,它使我們很難找到輸入字符串的規(guī)律,也很難根據(jù)加密后的字符弄清楚字符串原來的模樣。,17,(2)使用MD5也可以生成散列,byte bytePassword = null; string tmpPassword = txtPassword.Text.Trim(); MD5 md5 = MD5.Create(); by

6、tePassword = md5.ComputeHash(Encoding.Unicode.GetBytes(tmpPassword); / Releases all resources used by the System.Security.Cryptography.HashAlgorithm. md5.Clear(); txtResults.Text = Convert.ToBase64String(bytePassword);,18,思考:,如果兩個用戶碰巧使用相同的密碼,那么散列值將完全相同。如果黑客看到您存儲密碼的表格,會從中找到規(guī)律并明白您很可能使用了常見的詞語,然后黑客會開始詞典

7、攻擊以確定這些密碼。,19,要確保任何兩個用戶密碼的散列值都不相同,一種方法是在加密密碼之前,在每個用戶的密碼中添加一個唯一的值。這個唯一值稱為“鹽”值(Salt)。 思考:在驗證密碼時,如何得到這個“鹽”值。,20,生成salt值,byte saltValue = new bytesaltLength; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); /用加密型強隨機字節(jié)填充的數(shù)組 rng.GetBytes(saltValue);,21,byte rawSalted = new byteunsaltedPasswo

8、rd.Length + saltValue.Length; unsaltedPassword.CopyTo(rawSalted,0); saltValue.CopyTo(rawSalted,unsaltedPassword.Length); SHA1 sha1 = SHA1.Create(); byte saltedPassword = sha1.ComputeHash(rawSalted); byte dbPassword = new bytesaltedPassword.Length + saltValue.Length; saltedPassword.CopyTo(dbPassword,0); saltValue.CopyTo(dbPassword,saltedPassword.Length);,22,password,unsalted Password,SHA1,saltValue,rawSalted,Salted Password,dbPassword,隨機生成,合并,合并,SHA1,20,24,4,20,24,密碼生成,23,密碼驗證,password,unsalted Password,SHA1,saltValue,Sa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論