欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類實(shí)例

 更新時(shí)間:2015年08月19日 12:52:47   作者:北風(fēng)其涼  
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類,涉及C#字符串加密與加密的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

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

這里的類CypherHelper是一個(gè)用于加密、解密字符串的工具類~~~,適合于方便地加密、解密長(zhǎng)度較短的密碼等字符串(C#里面已經(jīng)有了庫(kù)System.Security.Cryptography,對(duì)于比較長(zhǎng)的字符串或流來(lái)說(shuō)是一個(gè)更好的選擇)

類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();
  //逐個(gè)字符加密字符串
  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>
 /// 加密單個(gè)字符
 /// </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的轉(zhuǎn)換
  {
   while (c > '9') c -= 10;
  }
  else if (a >= 'a' && a <= 'z') //字符a-z的轉(zhuǎn)換
  {
   while (c > 'z') c -= 26;
  }
  else if (a >= 'A' && a <= 'Z') //字符A-Z的轉(zhuǎn)換
  {
   while (c > 'Z') c -= 26;
  }
  else return a; //不再上面的范圍內(nèi),不轉(zhuǎn)換直接返回
  return (char)c; //返回轉(zhuǎn)換后的字符
 }
 /// <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();
  //逐個(gè)字符解密字符串
  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>
 /// 解密單個(gè)字符
 /// </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的轉(zhuǎn)換
  {
   while (c < '0') c += 10;
  }
  else if (a >= 'a' && a <= 'z') //字符a-z的轉(zhuǎn)換
  {
   while (c < 'a') c += 26;
  }
  else if (a >= 'A' && a <= 'Z') //字符A-Z的轉(zhuǎn)換
  {
   while (c < 'A') c += 26;
  }
  else return a; //不再上面的范圍內(nèi),不轉(zhuǎn)換直接返回
  return (char)c; //返回轉(zhuǎn)換后的字符
 }
}

Main函數(shù)調(diào)用示例

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

運(yùn)行結(jié)果

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論