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());