C#字串加密解密函數

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   sp   

原文:C# 字串加密解密函數

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

 

//預設密鑰向量
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[] rgbIV = rgbKey;
        
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();

//返回的格式

//修改後 為了匹配下一篇php的des加密解密

StringBuilder ret = newStringBuilder(); foreach (byte b in mStream.ToArray()) {ret.AppendFormat("{0:X2}", b); } ret.ToString(); returnret.ToString();
        //
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;
    }
}

===========================================================================================

小知識:

上面的密鑰向量可以用字串轉換得到,那個0x12 看也看不動 算不來

 

C#中將字串轉換byte[],同時將byte[]換成字串

 

 

1   string   to byte  []
  string   str  =   "abcd"  ;  
  byte[]   bytes  =  System.Text.Encoding.UTF8.GetBytes(str);   
   -------------------------------------------------------------------------------------------------------------
 2  byte[]   to  string   
    
  byte[]   bytes  =   new  byte[255]  ;   
   string   str  =  System.Text.Encoding.UTF8.GetString(bytes,0,bytes.Length);   
--------------------------------------------------------------------------------------------

在附上二個方法:

   private static byte[]HexStringToByteArray(string s)
       {
           s = s.Replace(" ", "");
           byte[] buffer = new byte[s.Length / 2];
           for (int i = 0; i < s.Length; i += 2)
               buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2),16);
           return buffer;
       }


       private string ByteArrayToHexString(byte[] data)
       {
           StringBuilder sb = new StringBuilder(data.Length * 3);
           foreach (byte b in data)
               sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘).PadRight(3, ‘‘));
           return sb.ToString().ToUpper();
       }

 


C# 字串加密解密函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.