Rolinson's Blog

ASP.NET , J2ME , WAP
(还有收藏网络上的技术文章,以便一急之用)

博客园 首页 新随笔 联系 订阅 管理

using System;

 

namespace Penguin.Library.Security

{

     /// <summary>

     /// Cryptography 加密/解密

     /// </summary>

     public class Cryptography

     {

         public Cryptography ()

         {    }

 

         private static char[] key = "yA36zA48dEhfrvghGRg57h5UlDv3".ToCharArray();

 

         // FlashFXP 的解密方法

         /// <summary>

         /// 解密方法

         /// </summary>

         /// <param name="x">密文</param>

         /// <returns>明文</returns>

         public static string Decrypt(string x)

         {

              System.Text.StringBuilder sb = new System.Text.StringBuilder();

              char[] ca = x.ToCharArray();

              for (int i = 0; i < (ca.Length - 2); i += 2)

              {

                   string s1 = "" + ca[i + 2] + ca[i + 3];

                   string s2 = "" + System.Convert.ToString((byte) key[(i / 2) % 13], 16);

                   string s3 = "" + ca[i] + ca[i + 1];

                   int m = (System.Convert.ToInt32(s1, 16) ^ System.Convert.ToInt32(s2, 16)) - System.Convert.ToInt32(s3, 16);

                   if (m < 0)

                   {

                       m += 255;

                   }

                   sb.Append((char) ((short) m));

              }

              return sb.ToString();

         }

 

         // FlashFXP 的加密方法

         /// <summary>

         /// 加密方法

         /// </summary>

         /// <param name="x">明文</param>

         /// <returns>密文</returns>

         public static string Encrypt(string x)

         {

              char[] ca = x.ToCharArray();

              int k = new System.Random().Next(255);

              System.Text.StringBuilder sb = null;

              if (k > 15)

              {

                   sb = new System.Text.StringBuilder("" + System.Convert.ToString(k, 16));

              }

              else

              {

                   sb = new System.Text.StringBuilder("0" + System.Convert.ToString(k, 16));

              }

              int m = System.Convert.ToInt32(sb.ToString(), 16);

              for (int i = 0; i < ca.Length; i++)

              {

                   if ((ca[i] + m) > 255)

                   {

                       m = ((ca[i] + m) - 255) ^ key[i % 13];

                   }

                   else

                   {

                       m = (ca[i] + m) ^ key[i % 13];

                   }

                   if (m > 15)

                   {

                       sb.Append(System.Convert.ToString(m, 16));

                   }

                   else

                   {

                       sb.Append("0" + System.Convert.ToString(m, 16));

                   }

              }

              return sb.ToString().ToUpper();

         }

     }

}

 

posted on 2005-01-06 16:42  ByNow  阅读(951)  评论(0编辑  收藏  举报