私钥加密算法使用单个私钥来加密和解密数据。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。
通常,私钥算法(称为块密码)用于一次加密一个数据块。块密码(如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的值。
.NET提供以下实现类以提供对称的密钥加密算法:
•DESCryptoServiceProvider
•RC2CryptoServiceProvider
•RijndaelManaged
•TripleDESCryptoServiceProvider
分享到:
相关推荐
C# RSA非对称加密 实现私钥加密 公钥解密;可以用于生成授权码。 RSA生成一下随机值,然后都是用BigInteger类字符串跟字节数组互转
基于java的开发源码-利用DES私钥对称加密代码实例.zip 基于java的开发源码-利用DES私钥对称加密代码实例.zip 基于java的开发源码-利用DES私钥对称加密代码实例.zip 基于java的开发源码-利用DES私钥对称加密代码实例....
详细介绍了区块链使用的不对称加密在数字证书数字签名的应用
Java利用DES私钥对称加密实例
Java利用DES私钥对称加密代码实例 Java利用DES私钥对称加密代码实例.zip
Java利用DES私钥对称加密实例源码整理
Java利用DES私钥对称加密代码实例
RSA加密算法是一种非对称加密算法,本例使用RAS公钥加密私钥解密文件。
Java利用DES私钥对称加密代码实例.rar
可以直接运行成功的RSA加密解密示例 JAVA端采用公钥加密,服务端C#采用私钥解密。
Java利用DES私钥对称加密代码实例.7z
基于Java的利用DES私钥对称加密代码实例.zip
基于java的利用DES私钥对称加密代码实例.zip
java源码:Java利用DES私钥对称加密代码实例.zip
1.用自己的私钥对加密密钥进行解密,得到对称密钥--也只有自己才能解密。 2.用对称密钥对密文进行解密,得到原文和签名。 3.计算原文的摘要 4.用对方的公钥对签名进行解密获取发送来的摘要--身份验证 5.将两个...
基于Java的实例源码-利用DES私钥对称加密代码实例.zip
非对称加密 winpt 公钥 私钥 winpt是绿色版, gnugp需要安装,版本为1.4.11最通用版本 公钥私钥长度都是2048bit 采用rsa算法
RSA加密 非对称加密,有公钥和私钥之分,公钥用于数据加密,私钥用于数据解密 加密结果可逆