短信发送AZDG加密算法

Username:用户名,采用AZDG加密方式进行加密

Passwrod:密码,采用AZDG加密方式进行加密

密钥为:chinagdn

      /// <summary>
      /// 短信发送AZDG加密算法
      /// </summary>
      /// <param name="txt">加密字符串</param>
      /// <param name="key">私有密钥</param>
      /// <returns></returns>
      public static string passport_encrypt(string txt, string key)
      {
          // 使用随机数产生 0~32000 的值并 MD5()
          Random rnd = new Random(100);
          int int_encrypt_key = rnd.Next(0, 32000);
          string encrypt_key = int_encrypt_key.ToString();

          int ctr = 0;
          string tmp = "";
          byte[] encodebyte = new byte[txt.Length];
          for (int i = 0; i < txt.Length; i++)
          {
              ctr = ctr == encrypt_key.Length ? 0 : ctr;

              char prefix = encrypt_key[ctr];
              char left = txt[i];
              char right = encrypt_key[ctr++];

              encodebyte[i] = (byte)(left ^ right);
              char[] block = new char[2];
              block[0] = prefix;
              block[1] = Convert.ToChar(encodebyte[i]);
              tmp += new string(block);
          }
          //用base64编码
          string complicatedstring = passport_key(tmp, key);//先和key加一次密?

          byte[] inputbytes = System.Text.Encoding.Default.GetBytes(complicatedstring);

          string string_64 = Convert.ToBase64String(inputbytes, 0, inputbytes.Length);//再和随机key加密


          return string_64;
      }
      /// <summary>
      /// Passport 解密函数
      /// </summary>
      /// <param name="txt">加密后的字串</param>
      /// <param name="key">私有密匙(用于解密和加密)</param>
      /// <returns>字串经过私有密匙解密后的结果</returns>
      public static string passport_decrypt(string txt, string key)
      {
          byte[] array_64 = Convert.FromBase64String(txt);
          string txt_64 = System.Text.Encoding.Default.GetString(array_64);
          txt = passport_key(txt_64, key);

          string temp = "";
          byte[] encodebyte = new byte[txt.Length];
          for (int i = 0; i < txt.Length; i++)
          {

              char left = txt[i];
              char right = txt[++i];
              encodebyte[i] = (byte)(left ^ right);
          }
          temp = System.Text.Encoding.Default.GetString(encodebyte);
          return temp;
      }
      /// <summary>
      /// Passport 密匙处理函数
      /// </summary>
      /// <param name="txt">待加密或待解密的字串</param>
      /// <param name="encrypt_key">私有密匙(用于解密和加密)</param>
      /// <returns>处理后的密匙</returns>
      public static string passport_key(string txt, string encrypt_key)
      {
          //先md5编码
          encrypt_key =
               System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(encrypt_key, "MD5").ToString().ToLower();
          int ctr = 0;
          string tmp = "";
          byte[] encodebyte = new byte[txt.Length];
          for (int i = 0; i < txt.Length; i++)
          {
              ctr = ctr == encrypt_key.Length ? 0 : ctr;
              char left = txt[i];
              char right = encrypt_key[ctr++];
              encodebyte[i] = (byte)(left ^ right);
          }
          tmp = System.Text.Encoding.Default.GetString(encodebyte);
          return tmp;
      }
    

 

//插入下发短信
 string message = smsclient.InsertDownSms(passport_encrypt(username, "chinagdn"), passport_encrypt(password, "chinagdn"), "", sb.ToString());

 

posted @ 2014-05-24 15:15  蜜雪粮液  阅读(2535)  评论(4编辑  收藏  举报