SoFunction
Updated on 2025-03-06

Base64 encryption and decryption classes written in C#

This C# class is an encryption and decryption class based on Base64. Users can use the default key to encrypt and decrypt, or set the key to encrypt and decrypt, which is very practical.

Code 1: Very concise code

/// <summary>
/// Base64 encryption, decryption method/// </summary>
/// <paramname="s">Input string</param>/// <paramname="c">true-encryption, false-decryption</param>static public string base64(string s, bool c)
{
  if (c)
  {
    .ToBase64String((s));
  }
  else
  {
    try
{
  (.FromBase64String(pwdString));
}
catch(Exception exp)
{
  ;
}
  }
}

Code 2:

using System;
using ; 
using ;
namespace 
{
  /// &lt;summary&gt;
  /// Summary description of Encrypt.  /// &lt;/summary&gt;
  public class DEncrypt
  {
    /// &lt;summary&gt;
    /// Construct method    /// &lt;/summary&gt;
    public DEncrypt() 
    { 
    }
 
    #region Use default key string Encryption/decryption string 
    /// &lt;summary&gt;
    /// Encrypt string with default key string    /// &lt;/summary&gt;
    /// <param name="original">Plaintext</param>    /// <returns>ciphertext</returns>    public static string Encrypt(string original)
    {
      return Encrypt(original,"");
    }
    /// &lt;summary&gt;
    /// Decrypt string using default key string    /// &lt;/summary&gt;
    /// <param name="original">ciphertext</param>    /// <returns>Plain text</returns>    public static string Decrypt(string original)
    {
      return Decrypt(original,"",);
    }
 
    #endregion
 
    #region Use the given key string Encryption/decryption string    /// &lt;summary&gt;
    /// Encrypt string with the given key string    /// &lt;/summary&gt;
    /// <param name="original">original text</param>    /// <param name="key">key</param>    /// <param name="encoding">character encoding scheme</param>    /// <returns>ciphertext</returns>    public static string Encrypt(string original, string key) 
    { 
      byte[] buff = (original); 
      byte[] kb = (key);
      return Convert.ToBase64String(Encrypt(buff,kb));   
    }
    /// &lt;summary&gt;
    /// Decrypt string using the given key string    /// &lt;/summary&gt;
    /// <param name="original">ciphertext</param>    /// <param name="key">key</param>    /// <returns>Plain text</returns>    public static string Decrypt(string original, string key)
    {
      return Decrypt(original,key,);
    }
 
    /// &lt;summary&gt;
    /// Decrypt the string using the given key string, return the specified encoding method plaintext    /// &lt;/summary&gt;
    /// <param name="encrypted">ciphertext</param>    /// <param name="key">key</param>    /// <param name="encoding">character encoding scheme</param>    /// <returns>Plain text</returns>    public static string Decrypt(string encrypted, string key,Encoding encoding) 
    {   
      byte[] buff = Convert.FromBase64String(encrypted); 
      byte[] kb = (key);
      return (Decrypt(buff,kb));   
    } 
    #endregion
 
    #region Use default key string Encryption/decryption/byte[]    /// &lt;summary&gt;
    /// Decrypt byte[] using default key string    /// &lt;/summary&gt;
    /// <param name="encrypted">ciphertext</param>    /// <param name="key">key</param>    /// <returns>Plain text</returns>    public static byte[] Decrypt(byte[] encrypted) 
    { 
      byte[] key = ("");
      return Decrypt(encrypted,key);  
    }
    /// &lt;summary&gt;
    /// Encrypt with default key string    /// &lt;/summary&gt;
    /// <param name="original">Raw data</param>    /// <param name="key">key</param>    /// <returns>ciphertext</returns>    public static byte[] Encrypt(byte[] original) 
    { 
      byte[] key = ("");
      return Encrypt(original,key);  
    } 
    #endregion

    #region Use the given key to encrypt/decrypt/byte[] 
    /// &lt;summary&gt;
    /// Generate MD5 summary    /// &lt;/summary&gt;
    /// <param name="original">Data source</param>    /// <returns> Summary</returns>    public static byte[] MakeMD5(byte[] original)
    {
      MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); 
      byte[] keyhash = (original);   
      hashmd5 = null; 
      return keyhash;
    }

    /// &lt;summary&gt;
    /// Encrypt with the given key    /// &lt;/summary&gt;
    /// <param name="original">Plaintext</param>    /// <param name="key">key</param>    /// <returns>ciphertext</returns>    public static byte[] Encrypt(byte[] original, byte[] key) 
    { 
      TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();   
       = MakeMD5(key);
       = ; 
   
      return ().TransformFinalBlock(original, 0, );  
    } 
 
    /// &lt;summary&gt;
    /// Decrypt data with the given key    /// &lt;/summary&gt;
    /// <param name="encrypted">ciphertext</param>    /// <param name="key">key</param>    /// <returns>Plain text</returns>    public static byte[] Decrypt(byte[] encrypted, byte[] key) 
    { 
      TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); 
       = MakeMD5(key);  
       = ; 
 
      return ().TransformFinalBlock(encrypted, 0, );
    } 
  
    #endregion

  }
}

Code Three:

using System; 
using ; 
using ; 
 
namespace  
{ 
  public class Base64 
  { 
    private static string base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//Encoding character set    private static int[] base64DecodeChars = new int[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };//The corresponding position of ASICC characters    public static string base64encode(string str) 
    { //encryption      string Out = ""; 
      int i = 0, len = ; 
      char c1, c2, c3; 
      while (i &lt; len) 
      { 
        c1 = (str[i++] &amp; 0xff); 
        if (i == len) 
        { 
          Out += base64EncodeChars[c1 &gt;&gt; 2]; 
          Out += base64EncodeChars[(c1 &amp; 0x3) &lt;&lt; 4]; 
          Out += "=="; 
          break; 
        } 
        c2 = str[i++]; 
        if (i == len) 
        { 
          Out += base64EncodeChars[c1 &gt;&gt; 2]; 
          Out += base64EncodeChars[((c1 &amp; 0x3) &lt;&lt; 4) | ((c2 &amp; 0xF0) &gt;&gt; 4)]; 
          Out += base64EncodeChars[(c2 &amp; 0xF) &lt;&lt; 2]; 
          Out += "="; 
          break; 
        } 
        c3 = str[i++]; 
        Out += base64EncodeChars[c1 &gt;&gt; 2]; 
        Out += base64EncodeChars[((c1 &amp; 0x3) &lt;&lt; 4) | ((c2 &amp; 0xF0) &gt;&gt; 4)]; 
        Out += base64EncodeChars[((c2 &amp; 0xF) &lt;&lt; 2) | ((c3 &amp; 0xC0) &gt;&gt; 6)]; 
        Out += base64EncodeChars[c3 &amp; 0x3F]; 
      } 
      return Out; 
    } 
    public string utf16to8(string str) 
    { 
      string Out = ""; 
      int i, len; 
      char c;//char is 16-bit Unicode characters, range 0~0xffff, thanks to vczh for reminding      len = ; 
      for (i = 0; i &lt; len; i++) 
      {//Convert according to different ranges of characters        c = str[i]; 
        if ((c &gt;= 0x0001) &amp;&amp; (c &lt;= 0x007F)) 
        { 
          Out += str[i]; 
        } 
        else if (c &gt; 0x07FF) 
        { 
          Out += (char)(0xE0 | ((c &gt;&gt; 12) &amp; 0x0F)); 
          Out += (char)(0x80 | ((c &gt;&gt; 6) &amp; 0x3F)); 
          Out += (char)(0x80 | ((c &gt;&gt; 0) &amp; 0x3F)); 
        } 
        else 
        { 
          Out += (char)(0xC0 | ((c &gt;&gt; 6) &amp; 0x1F)); 
          Out += (char)(0x80 | ((c &gt;&gt; 0) &amp; 0x3F)); 
        } 
      } 
      return Out; 
    } 
 
    public static string base64decode(string str) 
    {//Decryption      int c1, c2, c3, c4; 
      int i, len; 
      string Out; 
      len = ; 
      i = 0; Out = ""; 
      while (i &lt; len) 
      { 
        do 
        { 
          c1 = base64DecodeChars[str[i++] &amp; 0xff]; 
        } while (i &lt; len &amp;&amp; c1 == -1); 
        if (c1 == -1) break; 
        do 
        { 
          c2 = base64DecodeChars[str[i++] &amp; 0xff]; 
        } while (i &lt; len &amp;&amp; c2 == -1); 
        if (c2 == -1) break; 
        Out += (char)((c1 &lt;&lt; 2) | ((c2 &amp; 0x30) &gt;&gt; 4)); 
        do 
        { 
          c3 = str[i++] &amp; 0xff; 
          if (c3 == 61) return Out; 
          c3 = base64DecodeChars[c3]; 
        } while (i &lt; len &amp;&amp; c3 == -1); 
        if (c3 == -1) break; 
        Out += (char)(((c2 &amp; 0XF) &lt;&lt; 4) | ((c3 &amp; 0x3C) &gt;&gt; 2)); 
        do 
        { 
          c4 = str[i++] &amp; 0xff; 
          if (c4 == 61) return Out; 
          c4 = base64DecodeChars[c4]; 
        } while (i &lt; len &amp;&amp; c4 == -1); 
        if (c4 == -1) break; 
        Out += (char)(((c3 &amp; 0x03) &lt;&lt; 6) | c4); 
      } 
      return Out; 
    } 
 
    public string utf8to16(string str) 
    { 
      string Out = ""; 
      int i, len; 
      char c, char2, char3; 
      len = ; 
      i = 0; while (i &lt; len) 
      { 
        c = str[i++]; 
        switch (c &gt;&gt; 4) 
        { 
          case 0: 
          case 1: 
          case 2: 
          case 3: 
          case 4: 
          case 5: 
          case 6: 
          case 7: Out += str[i - 1]; break; 
          case 12: 
          case 13: char2 = str[i++]; 
            Out += (char)(((c &amp; 0x1F) &lt;&lt; 6) | (char2 &amp; 0x3F)); break; 
          case 14: char2 = str[i++]; 
            char3 = str[i++]; 
            Out += (char)(((c &amp; 0x0F) &lt;&lt; 12) | ((char2 &amp; 0x3F) &lt;&lt; 6) | ((char3 &amp; 0x3F) &lt;&lt; 0)); break; 
        } 
      } 
      return Out; 
    } 
 
  } 
} 

The above is the entire content of this article, I hope you like it.