C#中的常用加密算法

《C#中的常用加密算法》

《C#中的常用加密算法》

1
:MD5
《C#中的常用加密算法》
《C#中的常用加密算法》以前在asp时代常用的MD5算法好象是从动网流出来的,后来大家都用它,基本上有两种 ,区别在md5.asp的结尾部分
《C#中的常用加密算法》
《C#中的常用加密算法》MD5 

=
 LCase(WordToHex(a) 
&
 WordToHex(b) 
&
 WordToHex(c) 
&
 WordToHex(d))
《C#中的常用加密算法》 
《C#中的常用加密算法》MD5

=
LCase(WordToHex(b) 
&
 WordToHex(c))  
《C#中的常用加密算法》
《C#中的常用加密算法》分别对应32位和16位加密方式
《C#中的常用加密算法》
《C#中的常用加密算法》在C#中对应的实现为
《C#中的常用加密算法》
《C#中的常用加密算法》《C#中的常用加密算法》

/**/
/// <summary>
《C#中的常用加密算法》       
/// 16位MD5加密方法,以前的DVBBS所使用
《C#中的常用加密算法》       
/// </summary>
《C#中的常用加密算法》       
/// <param name=”strSource”>待加密字串</param>
《C#中的常用加密算法》        
/// <returns>加密后的字串</returns>

《C#中的常用加密算法》
        
public
 
string
 MD5Encrypt(
string
 strSource)
《C#中的常用加密算法》《C#中的常用加密算法》        

《C#中的常用加密算法》
{
《C#中的常用加密算法》            
return MD5Encrypt(strSource, 16);
《C#中的常用加密算法》        }


《C#中的常用加密算法》《C#中的常用加密算法》        

/**/
/// <summary>
《C#中的常用加密算法》        
/// MD5加密,和动网上的16/32位MD5加密结果相同
《C#中的常用加密算法》        
/// </summary>
《C#中的常用加密算法》        
/// <param name=”strSource”>待加密字串</param>
《C#中的常用加密算法》        
/// <param name=”length”>16或32值之一,其它则采用.net默认MD5加密算法</param>
《C#中的常用加密算法》        
/// <returns>加密后的字串</returns>

《C#中的常用加密算法》
        
public
 
string
 MD5Encrypt(
string
 strSource, 
int
 length)
《C#中的常用加密算法》《C#中的常用加密算法》        

《C#中的常用加密算法》
{
《C#中的常用加密算法》            
byte[] bytes = Encoding.ASCII.GetBytes(strSource);
《C#中的常用加密算法》            
byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName(MD5)).ComputeHash(bytes);
《C#中的常用加密算法》            StringBuilder sb 
= new StringBuilder();
《C#中的常用加密算法》            
switch (length)
《C#中的常用加密算法》《C#中的常用加密算法》            
《C#中的常用加密算法》{
《C#中的常用加密算法》                
case 16:
《C#中的常用加密算法》                    
for (int i = 4; i < 12; i++)
《C#中的常用加密算法》                        sb.Append(hashValue[i].ToString(
x2));
《C#中的常用加密算法》                    
break;
《C#中的常用加密算法》                
case 32:
《C#中的常用加密算法》                    
for (int i = 0; i < 16; i++)
《C#中的常用加密算法》《C#中的常用加密算法》                    
《C#中的常用加密算法》{
《C#中的常用加密算法》                        sb.Append(hashValue[i].ToString(
x2));
《C#中的常用加密算法》                    }

《C#中的常用加密算法》                    
break;
《C#中的常用加密算法》                
default:
《C#中的常用加密算法》                    
for (int i = 0; i < hashValue.Length; i++)
《C#中的常用加密算法》《C#中的常用加密算法》                    
《C#中的常用加密算法》{
《C#中的常用加密算法》                        sb.Append(hashValue[i].ToString(
x2));
《C#中的常用加密算法》                    }

《C#中的常用加密算法》                    
break;
《C#中的常用加密算法》            }

《C#中的常用加密算法》
《C#中的常用加密算法》同样的其它语言都实现了DES加密与.net framework的des基础实现也不一样,比较郁闷的是我刚开始使用.net framework时还真的改写过perl版的des,后面才发现其实有更简单的办法,因为网上流传的perl
/c/java版的des算法都是块加密的,设置CipherMode为ECB就好了,郁闷ing.
《C#中的常用加密算法》
《C#中的常用加密算法》源代码如下
《C#中的常用加密算法》
《C#中的常用加密算法》《C#中的常用加密算法》        
public static byte[] DESKey = new byte[] 《C#中的常用加密算法》{0x820xBC0xA10x6A0xF50x870x3B0xE60x590x6A0x320x640x7F0x3A0x2A0xBB0x2B0x680xE20x5F0x060xFB0xB80x2D0x670xB30x550x190x4E0xB80xBF0xDD };
《C#中的常用加密算法》《C#中的常用加密算法》        
/**//// <summary>
《C#中的常用加密算法》        
/// DES加密
《C#中的常用加密算法》        
/// </summary>
《C#中的常用加密算法》        
/// <param name=”strSource”>待加密字串</param>
《C#中的常用加密算法》        
/// <param name=”key”>32位Key值</param>
《C#中的常用加密算法》        
/// <returns>加密后的字符串</returns>

《C#中的常用加密算法》《C#中的常用加密算法》        public string DESEncrypt(string strSource) 《C#中的常用加密算法》{
《C#中的常用加密算法》            
return DESEncrypt(strSource, DESKey);
《C#中的常用加密算法》        }

《C#中的常用加密算法》        
public string DESEncrypt(string strSource,byte[] key)
《C#中的常用加密算法》《C#中的常用加密算法》        
《C#中的常用加密算法》{
《C#中的常用加密算法》            SymmetricAlgorithm sa 
= Rijndael.Create();
《C#中的常用加密算法》            sa.Key 
= key;
《C#中的常用加密算法》            sa.Mode
= CipherMode.ECB;
《C#中的常用加密算法》            sa.Padding 
= PaddingMode.Zeros;
《C#中的常用加密算法》            MemoryStream ms 
= new MemoryStream();
《C#中的常用加密算法》            CryptoStream cs 
= new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);
《C#中的常用加密算法》            
byte[] byt = Encoding.Unicode.GetBytes(strSource);
《C#中的常用加密算法》            cs.Write(byt, 
0, byt.Length);
《C#中的常用加密算法》            cs.FlushFinalBlock();
《C#中的常用加密算法》            cs.Close();
《C#中的常用加密算法》            
return Convert.ToBase64String(ms.ToArray());
《C#中的常用加密算法》        }

《C#中的常用加密算法》《C#中的常用加密算法》        
/**//// <summary>
《C#中的常用加密算法》        
/// DES解密
《C#中的常用加密算法》        
/// </summary>
《C#中的常用加密算法》        
/// <param name=”strSource”>待解密的字串</param>
《C#中的常用加密算法》        
/// <param name=”key”>32位Key值</param>
《C#中的常用加密算法》        
/// <returns>解密后的字符串</returns>

《C#中的常用加密算法》《C#中的常用加密算法》        public string DESDecrypt(string strSource) 《C#中的常用加密算法》{
《C#中的常用加密算法》            
return DESDecrypt(strSource, DESKey);
《C#中的常用加密算法》        }

《C#中的常用加密算法》        
public string DESDecrypt(string strSource,byte[] key)
《C#中的常用加密算法》《C#中的常用加密算法》        
《C#中的常用加密算法》{
《C#中的常用加密算法》            SymmetricAlgorithm sa 
= Rijndael.Create();
《C#中的常用加密算法》            sa.Key 
= key;
《C#中的常用加密算法》            sa.Mode 
= CipherMode.ECB;
《C#中的常用加密算法》            sa.Padding 
= PaddingMode.Zeros;
《C#中的常用加密算法》            ICryptoTransform ct 
= sa.CreateDecryptor();
《C#中的常用加密算法》            
byte[] byt = Convert.FromBase64String(strSource);
《C#中的常用加密算法》            MemoryStream ms 
= new MemoryStream(byt);
《C#中的常用加密算法》            CryptoStream cs 
= new CryptoStream(ms, ct, CryptoStreamMode.Read);
《C#中的常用加密算法》            StreamReader sr 
= new StreamReader(cs, Encoding.Unicode);
《C#中的常用加密算法》            
return sr.ReadToEnd();
《C#中的常用加密算法》        }

《C#中的常用加密算法》
《C#中的常用加密算法》
《C#中的常用加密算法》

    原文作者:加密算法
    原文地址: https://www.cnblogs.com/ipusr/archive/2007/08/24/868735.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞