作者:乔山办公网日期:
返回目录:office365
一、混合加密的理由
a、前面提及了RSA加解密算法和DES加解密算法这两种加解密算法,由于随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,追溯历史破解DES的案例层出不穷,一台实际的机器可以在数天内破解DES是让某些人相信他们不能依赖DES的安全性的唯一方法。而相对于DES,RSA的安全性则相对高些,虽然破解RSA的案例也有,但其所付出的代价是相对大的(相对DES),如今RSA的密钥也在升级,这说明破解RSA的难度也在增大。
b、在RSA加解密算法中提及到RSA加密明文会受密钥的长度限制,这就说明用RSA加密的话明文长度是有限制的,而在实际情况我们要进行加密的明文长度或许会大于密钥长度,这样一来我们就不得不舍去RSA加密了。对此,DES加密则没有此限制。
鉴于以上两点(个人观点),单独的使用DES或RSA加密可能没有办法满足实际需求,所以就采用了RSA和DES加密方法相结合的方式来实现数据的加密。
其实现方式即:
1、信息(明文)采用DES密钥加密。
2、使用RSA加密前面的DES密钥信息。
最终将混合信息进行传递。
而接收方接收到信息后:
1、用RSA解密DES密钥信息。
2、再用RSA解密获取到的密钥信息解密密文信息。
最终就可以得到我们要的信息(明文)。
二、e799bee5baa6e4b893e5b19e337实现例子:
结合前面RSA和DES加密:
/// <summary>
/// RSA和DES混合加密
/// </summary>
/// <param name="data">待加密数据</param>
/// <param name="publicKey">RSA公钥</param>
/// <returns></returns>
public Param Encrypt(string data, string publicKey)
{
//加密数据
DESSecurity DES = new DESSecurity();
string DESKey = DES.GenerateKey();
string encryptData = DES.Encrypt(data, DESKey);
//加密DESkey
RSASecurity RSA = new RSASecurity();
string encryptDESKey = RSA.Encrypt(DESKey, publicKey);
Param mixParam = new Param();
mixParam.DESKey = encryptDESKey;
mixParam.Data = encryptData;
return mixParam;
}
/// <summary>
/// RSA和DES混合解密
/// </summary>
/// <param name="data">待解密数据</param>
/// <param name="key">带解密的DESKey</param>
/// <param name="privateKey">RSA私钥</param>
/// <returns></returns>
public string Decrypt(string data, string key, string privateKey)
{
//解密DESKey
RSASecurity RSA = new RSASecurity();
string DESKey = RSA.Decrypt(key, privateKey);
//解密数据
DESSecurity DES = new DESSecurity();
return DES.Decrypt(data, DESKey);
DES算法:美国国家标准局1973年开始研究除国防部外的其它部门的计算机系来统的数据加密标准,于1973年5月15日和1974年8月 27日先后两次源向公众发出了征求加密算法的公告。 1977年1月,美国政府颁布:采百纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES? Data Encryption Standard)。
RSA是第一个既能用于数据加密也能用于数字签名的算法。度它易于理解和操作,也知很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直道未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。
DES算法:美国国家标准局1973年开始研究除国防知部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月 27日先后两次向公众发出了征求加密算法的公告。 1977年1月,美国政府颁布:采纳IBM公司设计道的方案作为非机密数据的正式数据加密标准(DES? Data Encryption Standard)。
RSA是第一个既能用于数据加密也能用于数字签名的算法。它易内于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完容全攻破。
这个我不会。
推荐您可以下载超级加密3000试试。
超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!