zoukankan      html  css  js  c++  java
  • C# 加密解密算法 .

    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;
                 } 
             }  
     
     
         } 
     } 
    
  • 相关阅读:
    tcp/ip ---IP路由选择
    tcp/ip --IP:网际协议
    tcp/ip ---以太网和IEEE 802封装
    tcp/ip ---链路层
    internet与Internet的区别
    TCP/IP ---封装与分用
    TCP/IP ---互联网的地址
    SpringMvc 系统启动时加载数据到内存中
    hadoop-17-hive数据库元数据查看
    hadoop-16-sqoop导入oracle数据
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2757736.html
Copyright © 2011-2022 走看看