32.NET中加密解密基本概念
对消息的接收方来说,安全的交流方式需要同时满足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中加密解密基本概念的更多相关文章
- java中加密解密工具类
在工作中经常遇到需要加密.解密的场景.例如用户的手机号等信息,在保存到数据库的过程中,需要对数据进行加密.取出时进行解密. public class DEStool { private String ...
- .Net中的加密解密
返回博客列表 转 .Net中的加密解密 李朝强 发布时间: 2015/11/23 12:55 阅读: 33 收藏: 3 点赞: 0 评论: 0 在一些比较重要的应用场景中,通过网络传递数据需要进行加密 ...
- .net中加密与解密
.Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全.本文将简单地介绍了加密解密的一些概念,以及相关的数字签名.证书,最后介绍了如何在.NET中对数据进行对称 ...
- Aes加密/解密示例项目
#AesEncrypt:Aes加密/解密示例项目 <br> 附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看. *高级加密标准(英语:Advanced ...
- java关于密码的加密解密
密码的加密方法有多种,常见的为Aes.Md5 Aes加密,可逆. 其中,Md5加密是采用了散列算法,也就是哈希算法,可以进行多次散列加密.Md5加密是不可逆的,无法解密. MD5是不可逆的单向加密方式 ...
- Aes 加密解密 java加密解密
使用AES加密解密代码详解 首先,如果是使用nodejs + vue 写的前端, 那么你需要npm 加载一个js文件 npm i crypto-js --save --save-exact npm i ...
- 重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类
原文:重新想象 Windows 8 Store Apps (32) - 加密解密: 非对称算法, 数据转换的辅助类 [源码下载] 重新想象 Windows 8 Store Apps (32) - 加密 ...
- N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.
N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...
- 2019-2-20C#开发中常用加密解密方法解析
C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...
随机推荐
- C#比较时分秒大小,终止分钟默认加十分钟,解决跨天、跨月、跨年的情况
private void cmbInHostimes_SelectedIndexChanged(object sender, EventArgs e) { DataRow[] dr; if (chkM ...
- 20155225 实验三《敏捷开发与XP实践》实验报告
20155225 实验三<敏捷开发与XP实践>实验报告 一.使用工具(Code->Reformate Code)把代码重新格式化 IDEA里的Code菜单有很多实用的功能可以帮助我们 ...
- 如何用python解析mysqldump文件
一.前言 最近在做离线数据导入HBase项目,涉及将存储在Mysql中的历史数据通过bulkload的方式导入HBase.由于源数据已经不在DB中,而是以文件形式存储在机器磁盘,此文件是mysqldu ...
- javascript和jquery如何判断元素是否存在最佳。
在传统的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的.例如: document.getElementById(&q ...
- javascript大神修炼记(6)——OOP思想(继承)
读者朋友们大家好,我们今天这一讲就接着前面的封装继续讲解,今天就是在前面内容上面的升级,OOP思想中的继承,我们就先来解释一下继承到底是什么意思,我们在什么地方会用到继续. 继承就是,后代继续祖先的一 ...
- 【ARC066】F - Contest with Drinks Hard
题解 我写的斜率维护,放弃了我最擅长的叉积维护,然后发现叉积维护也不会爆long long哦-- 一写斜率维护我的代码就会莫名变长而且难写--行吧 我们看这题 推了推式子,发现这是个斜率的式子,但是斜 ...
- ubuntu 安装 Sqlite 和 可视化工具 SqliteBroswer
ubuntu 安装 Sqlite 和 可视化工具 SqliteBroswer 下载sqlite www.sqlite.org/download.html 安装Sqlite 创建一个目录: ...
- 深度学习常用数据集 API(包括 Fashion MNIST)
基准数据集 深度学习中经常会使用一些基准数据集进行一些测试.其中 MNIST, Cifar 10, cifar100, Fashion-MNIST 数据集常常被人们拿来当作练手的数据集.为了方便,诸如 ...
- 2018用IDEA搭建SSM框架(Spring+SpringMVC+Mybatis)
使用IDEA搭建ssm框架 环境 工具:IDEA 2018.1 jdk版本:jdk1.8.0_171 Maven版本:apache-maven-3.5.3 Tomcat版本:apache-tomcat ...
- bs和cs
CS(Client/Server):客户端----服务器结构.C/S结构在技术上很成熟,它的主要特点是交互性强.具有安全的存取模式.网络通信量低.响应速度快.利于处理大量数据.因为客户端要负责绝大多数 ...