安全算法

来源:互联网 发布:java编程基础培训学校 编辑:程序博客网 时间:2024/06/05 04:25

转载地址:http://blog.csdn.net/hjs218/article/details/53726065


       安全传输除了可以使用https,还可通过安全算法实现。常用的安全算法主要包括数字摘要、对称加密算法、非对称加密算法、信息编码等。

       一、数字摘要

      数字摘要也称为消息摘要,它是唯一对应一个消息或文本的固定长度的值,它由一个单向Hash函数对消息进行计算而产生。消息在传递中改变了,接受方

对收到的消息采用相同的Hash重新计算,产生的摘要跟原摘要进行比较,即可知道消息是否被恶意篡改了,所以消息摘要能够验证消息的完整性。常用的数字

摘要有MD5,SHA.

      1、MD5

MD5即Message Digest Algorithm 5,是数字摘要的一种实现,用于确保信息传输完整性和一致性,摘要长度为128位。MD5由MD4、MD3、MD2改进而来,

主要增强了算法复杂度和不可逆性。C#的MD5算法的参考(引用msdn):

[csharp] view plain copy
  1. <span style="white-space:pre">  </span>public static string GetMd5Hash(string input)  
  2.         {  
  3.         MD5 md5Hash = MD5.Create();  
  4.                 // Convert the input string to a byte array and compute the hash.              
  5.         byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));              
  6.         // Create a new Stringbuilder to collect the bytes             
  7.         // and create a string.              
  8.         StringBuilder sBuilder = new StringBuilder();              
  9.         // Loop through each byte of the hashed data     
  10.                 // and format each one as a hexadecimal string.              
  11.         for (int i = 0; i < data.Length; i++)              
  12.         {                  
  13.             sBuilder.Append(data[i].ToString("x2"));  
  14.                 }              
  15.         // Return the hexadecimal string.        
  16.         return sBuilder.ToString();       
  17.                 }  
  18.      }  

 2、SHA

          SHA是全称是Secure Hash Algorithm,即安全散列算法。1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦

信息处理标准(FIPS    PUB 180)公布,1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1,并被广泛使用。SHA-1的摘要信息长度为

160位,由于生成的摘要信息更长,运算的      过程更加复杂,在相同的硬件上,运算速度比MD5更慢,也更为安全。C#版SHA1算法参考

[csharp] view plain copy
  1.        byte[] data = new byte[DATA_SIZE];  
  2. byte[] result;   
  3.   
  4. SHA1 sha = new SHA1CryptoServiceProvider();   
  5. // This is one implementation of the abstract class SHA1.  
  6. result = sha.ComputeHash(data);    
二、对称加密

          对称加密算法是应用较早的加密算法,加解密使用相同的密钥,对称加密过程如下所示:


对称加密算法特点是算法公开、计算量小、加密效率高,使用长密钥时难破解性,但安全性由于依赖于密钥,泄露密钥就意味着任何人都可以对加密的

密文进行解密,因  此密钥的保护对于加密信息是否安全至关重要。常用的对称加密算法包括DES算法、3DES算法、AES算法等。

      由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解,因此演变出了3DES算法,3DES是DES向AES过渡的加密算法。

        1、DES

               加密算法如:

[csharp] view plain copy
  1. DESCryptoServiceProvider des = new DESCryptoServiceProvider();                    
  2. return des.CreateEncryptor(key, key).TransformFinalBlock(plain, 0, plain.Length);  
               解密算法如:
[csharp] view plain copy
  1. DESCryptoServiceProvider des = new DESCryptoServiceProvider();            <span style="white-space:pre">        </span>  
  2. return des.CreateDecryptor(key, key).TransformFinalBlock(encrypt, 0, encrypt.Length);  
[csharp] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 三、非对称加密</span>  

非对称加密算法又称为公开密钥加密算法,两个密钥,一个公钥,另一个私钥。公钥与私钥需要配对使用,如果用公钥对数据进行加密,只有对应

的私钥才能进行解密,而如果使用私钥对数据进行加密,那只有对应的公钥才能解密。由于加密和解密使用的是两个不同的密钥,所以这种算法称

为非对称加密算法。具体过程如下图所示:

     


非对称加密算法特点:对称加密算法只有一种密钥,并且是非公开的,若要解密则需要对方知道密钥,所以保证其安全性就是保证密钥的安全,而

一旦密钥在传输过程中泄露加密信息就不再安全。而非对称加密算法包含两种密钥,其中一个是公开的,这样不需要像对称加密算法那样,需要传

输密钥给对方进行数据加密了,大大提高了加密算法的安全性。非对称加密算法能够保证,即使在获知公钥、加密算法和加密源代码的情况下,也

无法获知公钥对应的私钥,因此也无法对公钥加密的密文进行解密。

由于非对称加密算法的复杂性,使得其加密解密速度远没有对称加密解密那么快,为了解决该问题,一般都是使用对称和非对称结合使用的办法,

优缺点互补,达到时间和安全的平衡:对称加密较长的文件,然后用非对称加密算法给文件密钥加密,解决了对称加密算法密钥分发问题。

当前使用最为广泛的非对称加密算法是RSA算法。


原创粉丝点击