安全算法

来源:互联网 发布:贵州云博大数据 编辑:程序博客网 时间:2024/06/02 17:19

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

       一、数字摘要

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

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

摘要有MD5,SHA.

      1、MD5

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

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

public static string GetMd5Hash(string input)        {MD5 md5Hash = MD5.Create();            // Convert the input string to a byte array and compute the hash.              byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));            // Create a new Stringbuilder to collect the bytes            // and create a string.            StringBuilder sBuilder = new StringBuilder();            // Loop through each byte of the hashed data                   // and format each one as a hexadecimal string.            for (int i = 0; i < data.Length; i++)            {                sBuilder.Append(data[i].ToString("x2"));                }            // Return the hexadecimal string.      return sBuilder.ToString();                     } }

 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算法参考

        byte[] data = new byte[DATA_SIZE];byte[] result; SHA1 sha = new SHA1CryptoServiceProvider(); // This is one implementation of the abstract class SHA1.result = sha.ComputeHash(data);  


二、对称加密

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


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

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

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

        1、DES

               加密算法如:

           DESCryptoServiceProvider des = new DESCryptoServiceProvider();                       return des.CreateEncryptor(key, key).TransformFinalBlock(plain, 0, plain.Length);        
               解密算法如:
           DESCryptoServiceProvider des = new DESCryptoServiceProvider();                       return des.CreateDecryptor(key, key).TransformFinalBlock(encrypt, 0, encrypt.Length);
    三、非对称加密

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

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

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

     


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

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

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

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

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

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

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

 


       

1 0
原创粉丝点击