对消息的接收方来说,安全的交流方式需要同时满足3个条件:
1、完整性:消息在传输途中没有被篡改过,即消息是完好无损的。
2、保密性:接收放可以理解或解密来自发送方的信息。(不保证第三方无法获得,但保证第三方无法解密)
3、可认证性:确定消息确实是由预期的发送方发送。

 

  散列运算

散列运算也叫哈希运算,对消息进行散列运算可以获得消息的摘要(Digest),也叫哈希值或指纹。MD5(Message-Digest Algorithm 5)就是一种散列运算。

 

散列运算特点:
● 不可逆
● 只要消息有哪怕是细微的差别,得到的摘要都不同。可以用来判断是否被篡改。(满足安全交流条件1)
● 得到的摘要长度固定,比如64位或128位

散列运算验证过程:
→发送方对消息进行散列运算,得到原始摘要
→接收放对消息进行相同的散列运算,得到本地摘要
→对比原始摘要和本地摘要
存在问题是,原始摘要有可能被篡改。

 

密匙散列算法验证过程:
→发送放要发送信息"hello",不直接对"hello"进行散列运算,而是对"[darren]hello"进行散列运算,并得到原始摘要。[darren]相当于密匙。
→将信息"hello"和"[darren]hello"的摘要发送给接收方。
→第三方有可能截获"[darren]hello"的摘要和信息"hello",可能修改消息为"hello world"并得到新的篡改摘要发送给接收方。
→接收方为消息加上密匙"[darren]hello world",进行散列运算得到最终摘要,发现与篡改摘要不一致,说明消息已经被篡改了。

  对称加密 Symmetric encryption

例如DES(Data Encryption Standard)、AES(Advanced Encryption Standard)。与散列算法的不同之处在于:加密是双向的,密文的大小和原消息的大小相当,不像散列算法那样是固定的64位或128位。

 

对称加密过程:
→发送方使用密匙对消息加密后发送信息。
→接收方使用相同的密匙对消息进行解密。
第三方依然有可能截取消息,但得到的是一堆乱码。

 

对称加密的问题:
满足了保密性,但没有满足完整性和可认证性。第三方一旦拿到了密匙,就可以进行篡改。

 

  非对称加密

非对称加密包含公匙/私匙对。加密规则是:公匙加密信息,私匙解密信息;私匙加密信息,公匙解密信息。

 

□ 加密模式

→发送方使用公匙对发送消息"hello"加密
→接收方使用私匙对消息解密获取到"hello"
但该模式也仅仅满足了保密性,没有能满足完整性和可认证性,因为公匙是公开的,任何人都可以使用这个公匙来加密信息并发送给接收方,而接收方也无法得知消息是由哪个发送方发送。

 

□ 认证模式

→发送方使用匙对发送消息"hello"加密。
→接收方使用公匙对消息解密获取到"hello"
由于只有发送方才有公匙,满足可认证性,但如果第三方也获得了公匙,也可以对消息进行解密,所以就不满足消息的保密性。

 

  数字签名

→发送方对信息"hello"散列运算,得到原始摘要。
→发送方使用私匙对原始摘要进行加密,也叫签名,将消息"hello"和加密过的原始摘要发送
→接收方使用发送方的公匙对消息摘要解密得到解密后摘要,如果与原始摘要相同,就确认消息来自预期发送方。(满足可认证性和保密性)
→接收方对收到的消息"hello"使用与发送方相同的散列算法获得摘要,如果该摘要与解密后摘要相同,确认消息没有经过篡改。(满足完整性)

 

  证书机制

证书机制可以看作是一个第三方机构,发送方把自身信息和公匙交给这个第三方,第三方将这些信息打包正证书Certificate,当需要公匙时,只需要获得证书,从中提取出公匙就可以了。

 

参考资料:
《.NET之美》--张子阳,感谢写了这么好的书!

32.NET中加密解密基本概念的更多相关文章

  1. java中加密解密工具类

    在工作中经常遇到需要加密.解密的场景.例如用户的手机号等信息,在保存到数据库的过程中,需要对数据进行加密.取出时进行解密. public class DEStool { private String ...

  2. .Net中的加密解密

    返回博客列表 转 .Net中的加密解密 李朝强 发布时间: 2015/11/23 12:55 阅读: 33 收藏: 3 点赞: 0 评论: 0 在一些比较重要的应用场景中,通过网络传递数据需要进行加密 ...

  3. .net中加密与解密

    .Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全.本文将简单地介绍了加密解密的一些概念,以及相关的数字签名.证书,最后介绍了如何在.NET中对数据进行对称 ...

  4. Aes加密/解密示例项目

    #AesEncrypt:Aes加密/解密示例项目 <br> 附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看. *高级加密标准(英语:Advanced ...

  5. java关于密码的加密解密

    密码的加密方法有多种,常见的为Aes.Md5 Aes加密,可逆. 其中,Md5加密是采用了散列算法,也就是哈希算法,可以进行多次散列加密.Md5加密是不可逆的,无法解密. MD5是不可逆的单向加密方式 ...

  6. Aes 加密解密 java加密解密

    使用AES加密解密代码详解 首先,如果是使用nodejs + vue 写的前端, 那么你需要npm 加载一个js文件 npm i crypto-js --save --save-exact npm i ...

  7. 重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类

    原文:重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类 [源码下载] 重新想象 Windows 8 Store Apps (32) - 加密 ...

  8. N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.

    N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...

  9. 2019-2-20C#开发中常用加密解密方法解析

    C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...

随机推荐

  1. java 使用内部类的理由

    每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响 内部类有效的实现了多重继承,也就是说,内部类允许继承多个非接口类型(类或抽象类) 如 ...

  2. 查找Mysql慢查询Sql语句

    一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_tim ...

  3. LeetCode691. Stickers to Spell Word

    We are given N different types of stickers. Each sticker has a lowercase English word on it. You wou ...

  4. Linux学习笔记:cp和scp复制文件

    拷贝文件和文件夹,在Linux上通过cp命令来实现. cp:用户当前机器的文件复制 scp:通过ssh本机和其他机器的文件复制 secure copy cp a.txt b.txt scp a.txt ...

  5. sublime text配置make工具

    sublime text配置make工具 Linux下许多项目是用makefile来管理的,是用gcc+make等方式来编译和运行. 在只有tty的场合或年代,使用vim或emacs是不二选择:但在L ...

  6. AOP实战(1)

    AOP在MVC中有广泛的应用 如:IActionFilter. IAuthenticationFilter. IAuthorizationFilter.IExceptionFilter.IResult ...

  7. Storm(一)Storm的简介与相关概念

    一.Storm的简介 官网地址:http://storm.apache.org/ Storm是一个免费开源.分布式.高容错的实时计算系统.Storm令持续不断的流计算变得容易,弥补了Hadoop批处理 ...

  8. 【51nod】1822 序列求和 V5

    题解 我是zz吧 nonprime[i * prime[j]] = 0 = = 还以为是要卡常,卡了半天就是过不掉 我们来说这道题-- 首先,我们考虑一个\(K^2\)做法 \(f_{k}(N) = ...

  9. Asp.Net Core2.0允许跨域请求设置

    1.services /// <summary> /// /// </summary> /// <param name="services">& ...

  10. MapReduce与批处理------《Designing Data-Intensive Applications》读书笔记14

    之前的文章大量的内容在和大家探讨分布式存储,接下来的章节进入了分布式计算领域.坦白说,个人之前专业的重心侧重于存储,对许多计算的内容理解可能不是和确切,如果文章中的理解有所不妥,愿虚心赐教.本篇将和大 ...