木馏油私钥加密算法使⽤单个私钥来加密和解密数据。由于具有密钥的任意⼀⽅都可以使⽤该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。私钥加密⼜称为对称加密,因为同⼀密钥既⽤于加密⼜⽤于解密。私钥加密算法⾮常快(与公钥算法相⽐),特别适⽤于对较⼤的数据流执⾏加密转换。 通常,私钥算法(称为块密码)⽤于⼀次加密⼀个数据块。块密码(如 RC2、DES、TripleDES 和 Rijndael)通过加密将 n 字节的输⼊块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进⾏。由于n 很⼩(对于RC2、DES 和TripleDES,n = 8 字节;n = 16 [默认值];n = 24;对于 Rijndael,n = 32),因此必须对⼤于 n 的数据值⼀次加密⼀个块。
基类库中提供的块密码类使⽤称作密码块链 (CBC) 的链模式,它使⽤⼀个密钥和⼀个初始化向量 (IV) 对数据执⾏加密转换。对于给定的私钥 k,⼀个不使⽤初始化向量的简单块密码将把相同的明⽂输⼊块加密为同样的密⽂输出块。如果在明⽂流中有重复的块,那么在密⽂流中将存在重复的块。如果未经授权的⽤户知道有关明⽂块的结构的任何信息,就可以使⽤这些信息解密已知的密⽂块并有可能发现您的密钥。若要克服这个问题,可将上⼀个块中的信息混合到加密下⼀个块的过程中。这样,两个相同的明⽂块的输出就会不同。由于该技术使⽤上⼀个块加密下⼀个块,因此使⽤了⼀个 IV 来加密数据的第⼀个块。使⽤该系统,未经授权的⽤户有可能知道的公共消息标头将⽆法⽤于对密钥进⾏反向⼯程。
zyzq
石墨密封圈
可利霉素作用与用途可以危及⽤此类型密码加密的数据的⼀个⽅法是,对每个可能的密钥执⾏穷举搜索。根据⽤于执⾏加密的密钥⼤⼩,即使使⽤最快的计算机执⾏这种搜索,也极其耗时,因此难以实施。使⽤较⼤的密钥⼤⼩将使解密更加困难。虽然从理论上说加密不会使对⼿⽆法检索加密的数据,但这确实极⼤增加了这样做的成本。如果执⾏彻底搜索来检索只在⼏天内有意义的数据需要花费三个⽉的时间,那么穷举搜索的⽅法是不实⽤的。
buck电路图
私钥加密的缺点是它假定双⽅已就密钥和 IV 达成协议,并且互相传达了密钥和 IV 的值。并且,密钥必须对未经授权的⽤户保密。由于存在这些问题,私钥加密通常与公钥加密⼀起使⽤,来秘密地传达密钥和 IV 的值。
.NET 提供以下实现类以提供对称的密钥加密算法:
• DESCryptoServiceProvider
• RC2CryptoServiceProvider
• RijndaelManaged
• TripleDESCryptoServiceProvider