欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-30 10:32:58
本文实例讲述了c#实现简易的加密、解密字符串工具类。分享给大家供大家参考。具体如下: 这里的类cypherhelper是一个用于加密、解密字符串的工具类~~~,适合于方便...

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