版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,本讲内容,权限管理的实现思路,.NET框架编程技术,Windows应用程序中 用户权限管理的实现,6,主讲:屠添翼,案例:高校教学管理系统,用户密码加密存储,2,在Windows应用程序中能够完成用户权限管理的设计与开发。,教学目标,教学重点,教学难点,盐值和散列 多层实体,权限管理实现的思路 用户密码加密存储,3,一、权限管理的实现思路,用户 角色 权限,4,-角色-,管理员 来自教师资料 教务人员 来自教师资料 教师 来自教师资料 学生 来自学生资料,5,-权限-,教师资料管理查询(0)、管理(1) 学生资料管理查询(2)、管理(3) 课程资料管理查询(4)、管理(5) 教学任务分配查
2、询(6)、管理(7) 教学计划安排查询(8)、管理(9) 考试成绩管理查询(10)、录入(11)、修改(12) 用户权限管理查询(13)、管理(14) 数据备份 备份(15)、还原(16),6,-角色权限-,教师资料管理查询(0)、管理(1) 学生资料管理查询(2)、管理(3) 课程资料管理查询(4)、管理(5) 教学任务分配查询(6)、管理(7) 教学计划安排查询(8)、管理(9) 考试成绩管理查询(10)、录入(11)、修改(12) 用户权限管理查询(13)、管理(14) 数据备份 备份(15)、还原(16),7,三个状态,1:允许项 0:可选项 -1:禁止项,8,数据库结构,9,10,二
3、、用户密码加密存储,思考: 大多数开发人员使用数据库存储密码,如果密码直接以明文的形式存放在数据库中,则系统很不安全。,11,散列,散列简介 散列(Hash)是一种单向算法,一旦数据被转换,将无法再获得其原始值。 可以使用散列算法对密码进行加密,然后再将其存储在数据库中。 思考:验证用户密码的流程是怎样?,12,散列,用户输入密码后,可以再次使用散列算法对其进行转换,然后将其与存储在数据库中的散列进行比较。,13,散列,散列的特点之一是,即使原始数据只发生一个小小的改动,数据的散列也会发生非常大的变化。Rickie 和 Ricky 这两个单词非常相似,但使用散列算法加密后的结果却相差甚远。你可
4、能根本看不出二者之间有什么相似之处。,14,散列,.NET 开发人员可以使用多种散列算法类。最常用的是 SHA1 和 MD5。下面我们看一下如何为Rickie这样的普通字符串生成散列,使任何人都无法识别它。,15,(1)使用 SHA1 生成散列,byte bytePassword = null; / 创建新的加密服务提供程序对象 SHA1 sha1 = SHA1.Create(); / 将原始字符串转换成字节数组,然后计算散列,并返回一个字节数组 bytePassword = sha1.ComputeHash(Encoding.Unicode.GetBytes(Rickie); / 释放资源
5、sha1.Clear(); / 返回散列值的Base64 编码字符串 Console.WriteLine( Convert.ToBase64String(bytePassword);,16,如此可见,输入字符串的一个小小变化就会产生完全不同的字符组合。这正是散列算法之所以有效的原因,它使我们很难找到输入字符串的规律,也很难根据加密后的字符弄清楚字符串原来的模样。,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,思考:,如果两个用户碰巧使用相同的密码,那么散列值将完全相同。如果黑客看到您存储密码的表格,会从中找到规律并明白您很可能使用了常见的词语,然后黑客会开始词典
7、攻击以确定这些密码。,19,要确保任何两个用户密码的散列值都不相同,一种方法是在加密密码之前,在每个用户的密码中添加一个唯一的值。这个唯一值称为“盐”值(Salt)。 思考:在验证密码时,如何得到这个“盐”值。,20,生成salt值,byte saltValue = new bytesaltLength; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); /用加密型强随机字节填充的数组 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度服务金融机构的IT系统维护合同2篇
- 2024年度版权许可协议:影视作品网络传播权授权3篇
- 二零二四年度网络购物返利合作协议(04版)2篇
- 二零二四年度槽罐车液化气体运输合同
- 二零二四年网络直播主播配音培训合同
- 四人餐饮合伙经营协议书(2篇)
- 合伙经营车辆的合同
- 合同协议约稿合同范本格式样本
- 权威装修合同委托协议
- 检测站招标文件的精要解析
- 秘书学概论秘书职能环境
- 医保知识培训内容
- 上海工程技术大学招聘考试行政管理教师岗笔试面试历年真题库试卷
- 酒店新业态(酒店业发展趋势)课件
- 中华文明的五大突出特性
- 供电公司竞聘考试试卷答案
- 动作分析分析课件
- 工程项目管理(三控三管一协调)
- 桥梁风险辨识表
- 《标书制作流程培训》课件
- 《气凝胶的应用》课件
评论
0/150
提交评论