您的位置:首页 > 编程语言 > C#

C# 加密解密算法

2012-02-12 16:56 417 查看
1 、方法一 (不可逆加密)
public   string  EncryptPassword( string  PasswordString, string  PasswordFormat )
{
string   encryptPassword  =   null ;
if  (PasswordFormat = " SHA1 " )  {
encryptPassword = FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString

, " SHA1 " );
}
elseif (PasswordFormat = " MD5 " )
{ encryptPassword = FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString

, " MD5 " );
}
return  encryptPassword ;
}

2 、方法二 (可逆加密)
public   interface  IBindesh
{
string  encode( string  str);
string  decode( string  str);
}

public   class  EncryptionDecryption : IBindesh
{
public   string  encode( string  str)
{
string  htext  =   "" ;

for  (  int  i  =   0 ; i  <  str.Length; i ++ )
{
htext  =  htext  +  ( char ) (str[i]  +   10   -   1   *   2 );
}
return  htext;
}

public   string  decode( string  str)
{
string  dtext  =   "" ;

for  (  int  i = 0 ; i  <  str.Length; i ++ )
{
dtext  =  dtext  +  ( char ) (str[i]  -   10   +   1 * 2 );
}
return  dtext;
}

3 、方法三 (可逆加密)

const   string  KEY_64  =   " VavicApp " ; // 注意了,是8个字符,64位

const   string  IV_64  =   " VavicApp " ;
public   string  Encode( string  data)
{
byte [] byKey  =  System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte [] byIV  =  System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

DESCryptoServiceProvider cryptoProvider  =   new  DESCryptoServiceProvider();
int  i  =  cryptoProvider.KeySize;
MemoryStream ms  =   new  MemoryStream();
CryptoStream cst  =   new  CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey,

byIV), CryptoStreamMode.Write);

StreamWriter sw  =   new  StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return  Convert.ToBase64String(ms.GetBuffer(),  0 , ( int )ms.Length);

}

public   string  Decode( string  data)
{
byte [] byKey  =  System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte [] byIV  =  System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

byte [] byEnc;
try
{
byEnc  =  Convert.FromBase64String(data);
}
catch
{
return   null ;
}

DESCryptoServiceProvider cryptoProvider  =   new  DESCryptoServiceProvider();
MemoryStream ms  =   new  MemoryStream(byEnc);
CryptoStream cst  =   new  CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey,

byIV), CryptoStreamMode.Read);
StreamReader sr  =   new  StreamReader(cst);
return  sr.ReadToEnd();
}

4 、MD5不可逆加密

(32位加密)

public   string  GetMD5( string  s,  string  _input_charset)
{

/**/ /**/ /**/ ///   <summary>
///  与ASP兼容的MD5加密算法
///   </summary>

MD5 md5  =   new  MD5CryptoServiceProvider();
byte [] t  =  md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
StringBuilder sb  =   new  StringBuilder( 32 );
for  ( int  i  =   0 ; i  <  t.Length; i ++ )
{
sb.Append(t[i].ToString( " x " ).PadLeft( 2 , ' 0 '));
}
return  sb.ToString();
}
(16位加密)

public   static   string  GetMd5Str( string  ConvertString)
{
MD5CryptoServiceProvider md5  =   new  MD5CryptoServiceProvider();
string  t2  =

BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)),  4 ,  8 );
t2  =  t2.Replace( " - " ,  "" );
return  t2;
}

5 、加解文本文件

// 加密文件
private   static   void  EncryptData(String inName, String outName,  byte [] desKey,  byte []

desIV)
{
// Create the file streams to handle the input and output files.
FileStream fin  =   new  FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout  =   new  FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength( 0 );

// Create variables to help with read and write.
byte [] bin  =   new   byte [ 100 ];  // This is intermediate storage for the encryption.
long  rdlen  =   0 ;               // This is the total number of bytes written.
long  totlen  =  fin.Length;     // This is the total length of the input file.
int  len;                      // This is the number of bytes to be written at a time.

DES des  =   new  DESCryptoServiceProvider();
CryptoStream encStream  =   new  CryptoStream(fout, des.CreateEncryptor(desKey, desIV),

CryptoStreamMode.Write);

// Read from the input file, then encrypt and write to the output file.
while  (rdlen  <  totlen)
{
len  =  fin.Read(bin,  0 ,  100 );
encStream.Write(bin,  0 , len);
rdlen  =  rdlen  +  len;
}

encStream.Close();
fout.Close();
fin.Close();
}

// 解密文件
private   static   void  DecryptData(String inName, String outName,  byte [] desKey,  byte []

desIV)
{
// Create the file streams to handle the input and output files.
FileStream fin  =   new  FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout  =   new  FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength( 0 );

// Create variables to help with read and write.
byte [] bin  =   new   byte [ 100 ];  // This is intermediate storage for the encryption.
long  rdlen  =   0 ;               // This is the total number of bytes written.
long  totlen  =  fin.Length;     // This is the total length of the input file.
int  len;                      // This is the number of bytes to be written at a time.

DES des  =   new  DESCryptoServiceProvider();
CryptoStream encStream  =   new  CryptoStream(fout, des.CreateDecryptor(desKey, desIV),

CryptoStreamMode.Write);

// Read from the input file, then encrypt and write to the output file.
while  (rdlen  <  totlen)
{
len  =  fin.Read(bin,  0 ,  100 );
encStream.Write(bin,  0 , len);
rdlen  =  rdlen  +  len;
}

encStream.Close();
fout.Close();
fin.Close();
}

6 、

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Security.Cryptography;
using  System.IO;

namespace  Component
{
public   class  Security
{
public  Security()
{

}

// 默认密钥向量
private   static   byte [] Keys  =    {  0x12 ,  0x34 ,  0x56 ,  0x78 ,  0x90 ,  0xAB ,  0xCD ,  0xEF  } ;
/**/ /**/ /**/ /**/ /**/ /**/ /**/ ///   <summary>
///  DES加密字符串
///   </summary>
///   <param name="encryptString"> 待加密的字符串 </param>
///   <param name="encryptKey"> 加密密钥,要求为8位 </param>
///   <returns> 加密成功返回加密后的字符串,失败返回源串 </returns>
public   static   string  EncryptDES( string  encryptString,  string  encryptKey)
{
try
{
byte [] rgbKey  =  Encoding.UTF8.GetBytes(encryptKey.Substring( 0 ,  8 ));
byte [] rgbIV  =  Keys;
byte [] inputByteArray  =  Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP  =   new  DESCryptoServiceProvider();
MemoryStream mStream  =   new  MemoryStream();
CryptoStream cStream  =   new  CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey,

rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray,  0 , inputByteArray.Length);
cStream.FlushFinalBlock();
return  Convert.ToBase64String(mStream.ToArray());
}
catch
{
return  encryptString;
}
}

/**/ /**/ /**/ /**/ /**/ /**/ /**/ ///   <summary>
///  DES解密字符串
///   </summary>
///   <param name="decryptString"> 待解密的字符串 </param>
///   <param name="decryptKey"> 解密密钥,要求为8位,和加密密钥相同 </param>
///   <returns> 解密成功返回解密后的字符串,失败返源串 </returns>
public   static   string  DecryptDES( string  decryptString,  string  decryptKey)
{
try
{
byte [] rgbKey  =  Encoding.UTF8.GetBytes(decryptKey);
byte [] rgbIV  =  Keys;
byte [] inputByteArray  =  Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP  =   new  DESCryptoServiceProvider();
MemoryStream mStream  =   new  MemoryStream();
CryptoStream cStream  =   new  CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey,

rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray,  0 , inputByteArray.Length);
cStream.FlushFinalBlock();
return  Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return  decryptString;
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: