私钥算法(块密码)
基本信息:私钥加密算法使用单个私钥来加密和解密数据,私钥加密又称为[对称加密],由于同一密钥既用于加密 又用于解密。
安全相关:因为具备密钥的任意一方均可以使用该密钥解密数据,所以必须保护密钥不被未经受权的代理获得。
一般用于:私钥加密算法很是快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。
私钥算法(称为块密码)用于一次加密一个数据块。块密码(如 RC二、DES、TripleDES 和 Rijndael)经过加密将 n 字节的输 入块转换为加密字节的输出块。
若是要加密或解密字节序列,必须逐块进行。因为 n 很小(对于 RC二、DES 和 TripleDES,n = 8 字节;n = 16 [默认值];n = 24;对于Rijndael,n = 32),所以必须对大于 n 的数据值一次加密一个块。 安全
[基类库]中提供的[块密码类]使用称做[密码块链(CBC)的链模式]
密码块链(CBC)的链模式:使用[一个密钥]和一个[初始化向量 (IV)]对数据执行加密转换
缘由:对于给定的私钥k,一个不使用初始化向量的简单块密码将把相同的明文输入块加密为一样的密文输出块, 若是在明文流中有重复的块,那么在密文流中将存在重复的块。
若是未经受权的 用户知道有关明文块的结构的任何信息,就可使用这些信息解密已知的密文块并有可能 发现您的密钥。
若要克服这个问题,可将上一个块中的信息混合到加密下一个块的过程当中,这样,两个相同的明文块的输出 就会不一样。
因为该技术使用上一个块加密下一个块,所以使用了一个 IV 来加密数据的第一个块。
使用该系统,未经受权的用户有可能知道的公共消息标头将没法用于对密钥进行反向工程。 ide
风险:能够危及用此类型密码加密的数据的一个方法是,对每一个可能的密钥执行[穷举搜索]。
根据用于执行加密的密钥大小,即便使用最快的计算机执行这种搜索,也极其耗时,所以难以实施。
使用较大的密钥大小将使解密更加困难。虽然从理论上说加密不会使对手没法检索加密的数据,但这确实 极大增长了这样作的成本。
若是执行完全搜索来检索只在几天内有意义的数据须要花费三个月的时间,那么穷举搜索的方法是不实用 的。
私钥加密的缺点是它假定双方已就[密钥]和[IV]达成协议,而且互相传达了[密钥]和[IV]的值。可是,密 钥必须对未经受权的用户保密。
因为存在这些问题,私钥加密一般与公钥加密一块儿使用,来秘密地传达[密钥]和[IV]的值。
加密
TripleDESCryptoServiceProvider spa
可在MSDN中查看具体使用状况 代理