华东15选5不开奖

C#實現簡易的加密、解密字符串工具類實例

C#實現簡易的加密、解密字符串工具類實例,這篇文章主要介紹了C#實現簡易的加密、解密字符串工具類,涉及C#字符串加密與加密的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
關鍵字:C#、加密、解密、字符串

本文實例講述了C#實現簡易的加密、解密字符串工具類。分享給大家供大家參考。具體如下:

這里的類CypherHelper是一個用于加密、解密字符串的工具類~~~,適合于方便地加密、解密長度較短的密碼等字符串(C#里面已經有了庫System.Security.Cryptography,對于比較長的字符串或流來說是一個更好的選擇)

類CypherHelper代碼:

class CypherHelper
{
 /// <summary>
 /// 加密字符串
 /// </summary>
 /// <param name="word">被加密字符串</param>
 /// <param name="key">密鑰</param>
 /// <returns>加密后字符串</returns>
 public static string Encrypt(string word, string key)
 {
  if (!System.Text.RegularExpressions.Regex.IsMatch(key, "^[a-zA-Z]*$"))
  {
   throw new Exception("key 必須由字母組成");
  }
  key = key.ToLower();
  //逐個字符加密字符串
  char[] s = word.ToCharArray();
  for (int i = 0; i < s.Length; i++)
  {
   char a = word[i];
   char b = key[i % key.Length];
   s[i] = EncryptChar(a, b);
  }
  return new string(s);
 }
 /// <summary>
 /// 加密單個字符
 /// </summary>
 /// <param name="a">被加密字符</param>
 /// <param name="b">密鑰</param>
 /// <returns>加密后字符</returns>
 private static char EncryptChar(char a, char b)
 {
  int c = a + b - 'a';
  if (a >= '0' && a <= '9') //字符0-9的轉換
  {
   while (c > '9') c -= 10;
  }
  else if (a >= 'a' && a <= 'z') //字符a-z的轉換
  {
   while (c > 'z') c -= 26;
  }
  else if (a >= 'A' && a <= 'Z') //字符A-Z的轉換
  {
   while (c > 'Z') c -= 26;
  }
  else return a; //不再上面的范圍內,不轉換直接返回
  return (char)c; //返回轉換后的字符
 }
 /// <summary>
 /// 解密字符串
 /// </summary>
 /// <param name="word">被解密字符串</param>
 /// <param name="key">密鑰</param>
 /// <returns>解密后字符串</returns>
 public static string Decrypt(string word, string key)
 {
  if (!System.Text.RegularExpressions.Regex.IsMatch(key, "^[a-zA-Z]*$"))
  {
   throw new Exception("key 必須由字母組成");
  }
  key = key.ToLower();
  //逐個字符解密字符串
  char[] s = word.ToCharArray();
  for (int i = 0; i < s.Length; i++)
  {
   char a = word[i];
   char b = key[i % key.Length];
   s[i] = DecryptChar(a, b);
  }
  return new string(s);
 }
 /// <summary>
 /// 解密單個字符
 /// </summary>
 /// <param name="a">被解密字符</param>
 /// <param name="b">密鑰</param>
 /// <returns>解密后字符</returns>
 private static char DecryptChar(char a, char b)
 {
  int c = a - b + 'a';
  if (a >= '0' && a <= '9') //字符0-9的轉換
  {
   while (c < '0') c += 10;
  }
  else if (a >= 'a' && a <= 'z') //字符a-z的轉換
  {
   while (c < 'a') c += 26;
  }
  else if (a >= 'A' && a <= 'Z') //字符A-Z的轉換
  {
   while (c < 'A') c += 26;
  }
  else return a; //不再上面的范圍內,不轉換直接返回
  return (char)c; //返回轉換后的字符
 }
}

Main函數調用示例

class Program
{
 static void Main(string[] args)
 {
  //1.加密
  string a = CypherHelper.Encrypt("TsybiusLee1234", "Galatea");
  Console.WriteLine("加密:TsybiusLee1234 → " + a);
  //2.解密
  string b = CypherHelper.Decrypt(a, "Galatea");
  Console.WriteLine("解密:" + a + " → " + b);
  Console.ReadLine();
 }
}

運行結果

希望本文所述對大家的C#程序設計有所幫助。

华东15选5不开奖
河北11选5开奖走势 快乐十分开奖结果 腾讯分分彩计划有哪些 雷速体育进球 青海快三走势图综合版 广西11选5开最快开奖 吉林快三 海王捕鱼手机版 股票推荐买公司 重庆时时彩开奖直播