C#加密解密

1、方法一 (不可逆加密)


publicstring 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);
}


publicclass 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";
publicstring 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位加密)

publicstring 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位加密)



publicstatic 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 = newbyte[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 = newbyte[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;
            }

        }



    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值