C#实现简易的加密、解密字符串工具类实例

所属分类: 软件编程 / C#教程 阅读数: 57
收藏 0 赞 0 分享

本文实例讲述了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#程序设计有所帮助。

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多