散列算法

加密很重要的一个应用就是保证数据的完整性,Alice想要给Bob发送消息,但是又考虑到Eve可能会截获并破坏或篡改该消息,在这种情况下,也许Alice并不在乎Eve能否得到想消息的内容,但她会考虑Bob是否知道自己得到的消息是Alice想要发给他的消息。 这个时候,Alice可以为她创建的消息建立散列码,该代码是基于消息内容的。对消息的任何改动都会导致不同的散列码,于是Alice将消息和散列码一同发给Bob。Bob收到消息后,会使用和Alice相同的技术为收到的消息创建散列码,如果他的散列码和Alice发给他的散列码一致,则Bob就可以断定这个消息并没有被更改过。
散列算法创建了一个散列码,也可以称作消息指纹,为一个消息提供完整性标识。

创建散列码

散列算法的核心是一个数学函数,在两个固定大小的数据块中运行它可以创建一个散列码,于是我们基于此,可以为Alice的消息创建散列码。我们可以将Alice的消息分成和散列函数输入的大小一样的块,每个数据块的大小因算法而不同,但是最好将块分得小一些,(.NET Framework包括的算法将消息分成512或1024位的块),虽然每个散列算法的散列函数设计不同,但是他们的基本方法是一样的,算法指定了一个“种子”值,将该值的第一块消息数据一同载入散列函数,这样就生成了第一个散列码,同理,将这个散列码和第二块消息数据一同载入散列函数,生成第二个散列码,依次进行下去,指导处理完所有的消息数据。由此可见,对于原始信息的微小改动,可能会由于连锁反应而使得生成的散列码有很大的不同。

转载于:https://www.cnblogs.com/feixuezheng/archive/2009/03/01/1400779.html

.NET 安全编程 阅读笔记(四)相关推荐

  1. JS高级程序设计——阅读笔记四

    JS高级程序设计--阅读笔记四 第六章 集合引用类型 6.1 Object 6.2 Array 6.2.1 创建数组 from()函数 6.2.2 数组空位 6.2.3 数组索引 6.2.4 检测数组 ...

  2. C++的35个技巧阅读笔记(四)

    文章目录 28.Smart Pointers(智能指针) 29.Reference counting(引用计数) 30.Proxy classes(替身类.代理类) 31.让函数根据一个以上的对象类型 ...

  3. 编程修养 阅读笔记四

    转载:http://blog.csdn.net/haoel/article/details/2872 26.为常量声明宏 -------- 最好不要在程序中出现数字式的"硬编码"( ...

  4. .net安全编程 阅读笔记(二)

    安全策略 安全策略是一组映射证据和权限关系的规则.特别是当程序集或应用程序域是以它们自己现实的证据组为基础, 此时, 运行库就会使用安全策略来决定授予这些程序集或应用程序域哪些代码访问权限. 它使管理 ...

  5. Java 并发编程阅读笔记

    第一章 原子性 可见性 有序性 1.1原子性 即某个正在执行的操作不能中断,不能被分割,要么就不执行,要么就执行完毕. 正如我们所知道的synchronized代码块,这块里面的东西要么就是被执行完毕 ...

  6. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(5):系统滴答定时器

    处理器有一个24位系统定时器,SysTick,它可以向下计数从重载值到0,在下一个时钟边沿重载LOAD寄存器中的值,然后在随后的时钟下降计数. 当处理器停止进行调试时,计数值不再缩减. 系统滴答控制和 ...

  7. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(3):嵌套向量中断控制器

    这一部分描述了嵌套向量中断控制器和它使用到的寄存器.NVIC支持: 高达81个中断(根据STM32设备的型号,参照数据手册): 对每个中断可编程优先级级别0-15,一个高的优先级级别相应着较低的优先级 ...

  8. c++ primer 第五版 阅读笔记四

    第四章 复合类型 4.1 数组 数组的声明:关于数组的内容写了蛮多的,包括一维数组和二维数组的创建.调用.返回等等,甚至用到了static和new/delete关键字,详见:(一维数组相关内容)htt ...

  9. 软件体系架构阅读笔记(四)

    文章地址:http://blog.jobbole.com/113953/ 什么是架构模式? Wikipedia 的解释: 在软件架构中,架构模式是对特定环境下常见问题的通用且可重用的解决方案.架构模式 ...

  10. Python计算机视觉编程学习笔记 四 照相机模型与增强现实

    照相机模型与增强现实 (一)针孔照相机模型 1.1 照相机模型 1.2 三维点的投影 1.3照相机矩阵的分解 1.4 计算照相机中心 (二)照相机标定 (三)以平面和标记物进行姿态估计 (四)增强现实 ...

最新文章

  1. 确认和回调_【短线回调,确认突破点】
  2. Hbuilder开发移动App(1)
  3. HD 1003 Max Sum (最大字段和问题)
  4. 前端知识点整理(三)不定时更新~
  5. 心里装着你,思念就很美(我要做一个文艺范儿的程序员)
  6. 再见 2017 你好 2018 ,程序员们的精彩年度总结
  7. php学籍信息管理系统心得_php实现学生管理系统
  8. 【java笔记】继承与多态
  9. bzoj千题计划254:bzoj2286: [Sdoi2011]消耗战
  10. 心电图 python_能测血压,还有心电图,兼顾9大运动模式,dido手环还不错
  11. f分布表完整图a=0.01_第7章 分布分析
  12. 最新Everest 企业版(AIDA64)使用SQL保存数据的方法介绍
  13. 各地级市系列环境指标数据(2003-2017年)
  14. 微软商店无法连接网络的问题解决
  15. C语言实现线性回归求斜率
  16. 基于51单片机智能大棚智能花盆浇水浇花灌溉补光散热原理图Proteus仿真
  17. 各位对IE放尊重点没有他,你怎么下载其他浏览器,你们等黑丝和白丝她来了!
  18. spring security+thymeleaf登录失败以及验证码错误提示
  19. Python(1)概述与基础
  20. 【数论】狄利克雷卷积

热门文章

  1. 基于springboot的猫头鹰物业管理系统
  2. 基于springboot+vue的交通事故案例库系统
  3. JDBC12 ORM01 Object[]存放一条记录
  4. ffmpeg js转换音频_浏览器音频兼容和ffmpeg的音频转码使用
  5. 用户权限框架php,ThinkPHP5ACL用户权限模块用法详解
  6. java 序列化,流,二进制的区别和联系
  7. 新买的服务器安装系统流程,新买的服务器安装操作系统
  8. mysql不识别生僻字_mysql生僻字插入失败解决方案
  9. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_04maven的安装...
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_5_综合案例_文件上传案例优化...