本文主要包含以下内容:
01.  加密的目的
02.  大概的一些加密方案
03.  私钥加密
04.  .NET Framework 提供的实现私钥加密算法的类
05.  公钥加密
06.  .NET Framework 提供的实现公钥加密算法的类
07.  数字签名
08.  .NET Framework 提供以下实现数字签名算法的类
09.  哈希值
10.  .NET Framework 提供以下实现数字签名算法的类
11.  随机数生成
12.  .NET Framework 中的类使用随机数生成器生成加密密钥。
=============================

加密可以帮助保护数据不被查看和修改,
并且可以帮助在本不安全的信道上提供安全的通信方式。
例如,可以使用加密算法对数据进行加密,在加密状态下传输数据,
然后由预定的接收方对数据进行解密。
如果第三方截获了加密的数据,解密数据是很困难的。

在一个使用加密的典型场合中,双方(小红和小明)在不安全的信道上通信。
小红和小明想要确保任何可能正在侦听的人无法理解他们之间的通信。
而且,由于小红和小明相距遥远,
因此小红必须确保她从小明处收到的信息没有在传输期间被任何人修改。
此外,她必须确定信息确实是发自小明而不是有人模仿小明发出的。

1. 加密用于达到以下目的:
---------------------
保密性     :帮助保护用户的标识或数据不被读取。
数据完整性 :帮助保护数据不更改。
身份验证   :确保数据发自特定的一方。

为了达到这些目的,您可以使用算法和惯例的组合(称作加密基元)来创建加密方案。
2. 下表列出了加密基元及它们的用法。
--------------------------------
加密基元                     使用 
私钥加密(对称加密)         对数据执行转换,使第三方无法读取该数据。
                             此类型的加密使用单个共享的机密密钥来加密和解密数据。
 
公钥加密(不对称加密)       对数据执行转换,使第三方无法读取该数据。
                             此类加密使用公钥/私钥对来加密和解密数据。
 
加密签名                     通过创建对特定方唯一的数字签名
                                 来帮助验证数据是否发自特定方。
                             此过程还使用哈希函数。
 
加密哈希                     将数据从任意长度映射为定长字节序列。
                             哈希在统计上是唯一的;
                             不同的双字节序列不会哈希为同一个值。

3.私钥加密
---------
私钥加密算法使用单个私钥来加密和解密数据。
由于具有密钥的任意一方都可以使用该密钥解密数据,
因此必须保护密钥不被未经授权的代理得到。

私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。
私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。

通常,私钥算法(称为块密码)用于一次加密一个数据块。
块密码(如 RC2、DES、TripleDES 和 Rijndael)通过加密
将 n 字节的输入块转换为加密字节的输出块。

如果要加密或解密字节序列,必须逐块进行。

由于 n 很小(对于 RC2、DES 和 TripleDES,n = 8 字节;
n = 16 [默认值];n = 24;对于 Rijndael,n = 32),
因此必须对大于 n 的数据值一次加密一个块。

基类库中提供的块密码类使用称作密码块链 (CBC) 的链模式,
它使用一个密钥和一个初始化向量 (IV) 对数据执行加密转换。
对于给定的私钥 k,一个不使用初始化向量的简单块密码
将把相同的明文输入块加密为同样的密文输出块。
如果在明文流中有重复的块,那么在密文流中将存在重复的块。
如果未经授权的用户知道有关明文块的结构的任何信息,
就可以使用这些信息解密已知的密文块并有可能发现您的密钥。

若要克服这个问题,可将上一个块中的信息混合到加密下一个块的过程中。
这样,两个相同的明文块的输出就会不同。
由于该技术使用上一个块加密下一个块,
因此使用了一个 IV 来加密数据的第一个块。
使用该系统,
未经授权的用户有可能知道的公共消息标头将无法用于对密钥进行反向工程。

可以危及用此类型密码加密的数据的一个方法是,
对每个可能的密钥执行穷举搜索。
根据用于执行加密的密钥大小,
即使使用最快的计算机执行这种搜索,也极其耗时,
因此难以实施。使用较大的密钥大小将使解密更加困难。

虽然从理论上说加密不会使对手无法检索加密的数据,
但这确实极大增加了这样做的成本。
如果执行彻底搜索来检索只在几天内有意义的数据需要花费三个月的时间,
那么穷举搜索的方法是不实用的。

私钥加密的缺点是它假定双方已就密钥和 IV 达成协议,
并且互相传达了密钥和 IV 的值。
并且,密钥必须对未经授权的用户保密。
由于存在这些问题,
私钥加密通常与公钥加密一起使用,来秘密地传达密钥和 IV 的值。

假设小红和小明是要在不安全的信道上进行通信的双方,
他们可能按以下方式使用私钥加密。
小红和小明都同意使用一种具有特定密钥和 IV 的特定算法(如 Rijndael)。
小红撰写一条消息并创建要在其上发送该消息的网络流。
接下来,她使用该密钥和 IV 加密该文本,
并通过 Internet 发送该文本。
她没有将密钥和 IV 发送给小明。
小明收到该加密文本并使用预先商定的密钥和 IV 对它进行解密。
如果传输的内容被人截获,截获者将无法恢复原始消息,
因为截获者并不知道密钥或 IV。
在这个方案中,密钥必须保密,但 IV 不需要保密。

在一个实际方案中,
将由小红或小明生成私钥并使用公钥(不对称)加密将私钥(对称)传递给对方。

4.  .NET Framework 提供以下实现私钥加密算法的类:
--------------------------------------------
DESCryptoServiceProvider

RC2CryptoServiceProvider

RijndaelManaged

TripleDESCryptoServiceProvider

5.公钥加密
----------
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。
公钥和私钥都在数学上相关联;
用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。
公钥可以提供给任何人;
公钥用于对要发送到私钥持有者的数据进行加密。
两个密钥对于通信会话都是唯一的。

公钥加密算法也称为不对称算法,
原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。

公钥加密算法使用固定的缓冲区大小,而私钥加密算法使用长度可变的缓冲区。
公钥算法无法像私钥算法那样将数据链接起来成为流,原因是它只可以加密少量数据。
因此,不对称操作不使用与对称操作相同的流模型。

双方(小红和小明)可以按照下列方式使用公钥加密。
首先,小红生成一个公钥/私钥对。
如果小明想要给小红发送一条加密的消息,他将向她索要她的公钥。
小红通过不安全的网络将她的公钥发送给小明,小明接着使用该密钥加密消息。
(如果小明在不安全的信道如公共网络上收到小红的密钥,
则小明必须同小红验证他具有她的公钥的正确副本。)
小明将加密的消息发送给小红,而小红使用她的私钥解密该消息。

但是,在传输小红的公钥期间,未经授权的代理可能截获该密钥。
而且,同一代理可能截获来自小明的加密消息。
但是,该代理无法用公钥解密该消息。
该消息只能用小红的私钥解密,而该私钥没有被传输。
小红不使用她的私钥加密给小明的答复消息,
原因是任何具有公钥的人都可以解密该消息。
如果小红想要将消息发送回小明,她将向小明索要他的公钥并使用该公钥加密她的消息。
然后,小明使用与他相关联的私钥来解密该消息。

在一个实际方案中,
小红和小明使用公钥(不对称)加密来传输私(对称)钥,
而对他们的会话的其余部分使用私钥加密。

公钥加密具有更大的密钥空间(或密钥的可能值范围),
因此不大容易受到对每个可能密钥都进行尝试的穷举攻击。
由于不必保护公钥,因此它易于分发。
公钥算法可用于创建数字签名以验证数据发送方的身份。
但是,公钥算法非常慢(与私钥算法相比),不适合用来加密大量数据。
公钥算法仅对传输很少量的数据有用。
公钥加密通常用于加密一个私钥算法将要使用的密钥和 IV。
传输密钥和 IV 后,会话的其余部分将使用私钥加密。

6.  .NET Framework 提供以下实现公钥加密算法的类:
----------------------------------------
DSACryptoServiceProvider

RSACryptoServiceProvider

7.数字签名
----------
公钥算法还可用于构成数字签名。
数字签名验证发送方的身份(如果您信任发送方的公钥)并帮助保护数据的完整性。
使用由小红生成的公钥,
小红的数据的接收者可以通过将数字签名与小红的数据和小红的公钥进行比较
来验证是否是小红发送了该数据。

为了使用公钥加密对消息进行数字签名,
小红首先将哈希算法应用于该消息以创建消息摘要。
该消息摘要是数据的紧凑且唯一的表示形式。
然后,小红用她的私钥加密该消息摘要以创建她的个人签名。
在收到消息和签名时,小明使用小红的公钥解密签名以恢复消息摘要,
并使用与小红所使用的相同的哈希算法来散列消息。
如果小明计算的消息摘要与从小红那里收到的消息摘要完全一致,
小明就可以确定该消息来自私钥的持有人,
并且数据未被修改过。
如果小明相信小红是私钥的持有人,则他知道该消息来自小红。

请注意,由于发送方的公钥为大家所周知,
并且它通常包含在数字签名格式中,因此任何人都可以验证签名。
此方法不保守消息的机密;
若要使消息保密,还必须对消息进行加密。

8.  .NET Framework 提供以下实现数字签名算法的类:
-------------------------
DSACryptoServiceProvider

RSACryptoServiceProvider

9.哈希值
--------
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,
这个小的二进制值称为哈希值。
哈希值是一段数据唯一且极其紧凑的数值表示形式。
如果散列一段明文而且哪怕只更改该段落的一个字母,
随后的哈希计算都将产生不同的值。
要找到散列为同一个值的两个不同的输入,在计算上是不可能的。

消息身份验证代码 (MAC) 哈希函数通常与数字签名一起用于对数据进行签名,
而消息检测代码 (MDC) 哈希函数则用于数据完整性。

双方(小红和小明)可按下面的方式使用哈希函数来确保数据的完整性。
如果小红对小明编写一条消息并创建该消息的哈希,
则小明可以在稍后散列该消息并将他的哈希与原始哈希进行比较。
如果两个哈希值相同,则该消息没有被更改;
如果值不相同,则该消息在小红编写它之后已被更改。
为了使此系统发挥作用,
小红必须对除小明外的所有人保密原始的哈希值。

10.  .NET Framework 提供以下实现数字签名算法的类:
--------------------------------
HMACSHA1

MACTripleDES

MD5CryptoServiceProvider

SHA1Managed

SHA256Managed

SHA384Managed

SHA512Managed

11. 随机数生成
-----------
随机数生成是许多加密操作不可分割的组成部分。
例如,加密密钥需要尽可能地随机,以便使生成的密钥很难再现。
加密随机数生成器必须生成无法以计算方法推算出(低于 p < .05 的概率)的输出;
即,任何推算下一个输出位的方法不得比随机猜测具有更高的成功概率。

12.  .NET Framework 中的类使用随机数生成器生成加密密钥。
--------------
RNGCryptoServiceProvider 类是随机数生成器算法的实现。

转载于:https://www.cnblogs.com/freeliver54/archive/2007/03/03/662907.html

[引]VS2005帮助文档 : 加密 概述相关推荐

  1. 办公文档加密,企业文档加密,强制性透明加密技术,fasoft

    随着企事业单位的快速发展,文档以电子文档方式为企事业单位承载着越来越多重要的信息.而由于电子文档的容易散播性,导致企事业单位在外发给客户或合作伙伴的重要资料,都可能会在这交互的过程中被篡改.无序传播等 ...

  2. Word文档加密技巧

    (作者:jinqq 本文选自<中国电脑教育报> 2002年04月17日 09:19) 文档的安全是我们每个用户都非常关心的话题,尤其是在公共办公场所,如何更加有效地保护我们的文档,更是一个 ...

  3. 加密选项_Word中新建、保存、及文档加密的设置方式

    Word中新建.保存的方式有两种的方式,第一就是通过文档操作的一个方式,第二种就是用快捷键的一个操作方式来提高一个工作的速度和工作效率.大家要熟记的是快捷键的一个操作方式.那下面哆哆就给大家来介绍一下 ...

  4. java基于easypoi实现对导出的excel文档加密

    **项目背景 随着项目日新月异的变化,对数据的安全性也越来越高,特别是政府类型的项目,数据安全往往是非常重要的,最近项目中导出的文件被要求需要密码才能打开,所以写下这篇文章,特此记录一下. 文章目录 ...

  5. 给Office文档加密方式与原理揭秘

    Word.Excel和PowerPoint是朋友们在日常学习和工作中经常使用的三个Office组件,然而它们在提高我们工作效率的同时也会让我们担心文档的安全性,因此,为了文档不被他人所查看,我们最好是 ...

  6. 针对文档加密系统,如何不破解将文档解密上传

    故事的开端 我们系统是对外系统,里面有表格上传功能,前几天有客户反馈,上传表格无法解析,远程后发现客户的电脑安装有文档加密系统,这种文档加密系统是为了 防止公司内部人员将公司机密的文档信息泄露出去而强 ...

  7. word计算机桌面加密,电脑给Word文档加密的详细步骤

    今天给大家分享电脑给Word文档加密攻略,保护Word文档安全是大家比较关心的话题.Word有着强大的文字编辑功能,一些用户编辑好word文档后担心别人随意查看或修改内容.为防信息泄露,我们可以给Wo ...

  8. 巧妙设置win7系统给WPS文档加密

    WPS办公软件自推出以来便受到众多上班族用户的欢迎,我们可以通过这款工具编辑文档.保存数据.如果WPS文档中有重要数据,我们该如何防止别人未经允许查看呢?下面小编就来教大家通过设置win7系统给WPS ...

  9. IP-guard苹果加密软件苹果系统加密Mac文档加密软件

    IP-guard苹果加密软件|苹果系统加密|Mac文档加密软件 员工出差 也能加密管控 对于需要出差外出的同时,授予有限的离线授权. 允许外出继续使用加密文档,文档仍保持加密状态,只能在被授权的计算机 ...

  10. 成功解决pdf文档加密后时间久了忘记密码—本文档有打开口令或修改口令—在线完美解决

    成功解决pdf文档加密后时间久了忘记密码-本文档有打开口令或修改口令-在线完美解决 目录 解决问题 解决方法 T1.网页版工具smallpdf T2.网页版工具freemypdf 解决问题 pdf文档 ...

最新文章

  1. 03Template Method模式
  2. 堆排序算法实现思想个人理解
  3. 搭建 Hadoop 伪分布式环境
  4. 使用 Truffle Develop 和 console
  5. FragmentTabHost + Fragment 使用小记
  6. spring源码分析之spring-messaging模块详解
  7. Redis内存分析工具
  8. 好像博问不能回复了,看似是某个脚本错误阻止了提交。可有此事?
  9. 腾讯云ubuntu18安装图形化界面
  10. 程序员浪漫起来到底有多可怕!
  11. 阿里巴巴开源语音识别声学建模技术
  12. Doris之数据模型的选择建议
  13. 澎湖师傅共制巨型“米龟” 延续两岸“乞龟”祈福民俗
  14. 四川大学mac用户登陆锐捷校园网指南
  15. cefsharp远程调试工具
  16. echarts曲线图 鼠标位置偏移与提示框的大小设置(与竖线位置偏离)
  17. Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
  18. 郭霖:手把手教你实现 App 360 度旋转看车效果
  19. 密码分析之单表代换原理详解与算法实现
  20. C语言求某天是一年里的第几天(详细)

热门文章

  1. c1flexGrid 在单元格中显示图片, 及行号
  2. Lua的协程和协程库详解
  3. 触发器、作业、序列、连接
  4. 3月AV-Comparatives杀毒软件测试结果出炉
  5. React中函数式声明组件
  6. jpGraph学习——绘制3D饼形图
  7. 根据系统创建文件路径
  8. 分享40个超棒的CSS3按钮教程
  9. 转:多线程--六种多线程方法解决UI线程阻塞
  10. 4.企业安全建设指南(金融行业安全架构与技术实践) --- 内控合规管理