好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现简易的加密、解密字符串工具类实例的详细内容...

  阅读:78次