21,886
社区成员
发帖
与我相关
我的任务
分享
static string mymd5(string str)
{
string secret_string = "5*j,.^&;?.%#@!";
string md5code = smd5(str).Substring(8, 10);
string key = smd5(md5code + secret_string);
var UTF8 = new System.Text.UTF8Encoding();
Byte[] bstr = UTF8.GetBytes(str); //将传入串转成字节数组
Byte[] bkey = UTF8.GetBytes(key); //将键转成字节数组
for (int i = 0, k = 0; i < bstr.Length; i++, k = i % bstr.Length)
{
bstr[i] ^= bkey[k];
}
return Convert.ToBase64String(bstr) + md5code;
}
static string mymd5(string str, string action)
{
if (action == "EN") return mymd5(str);
string secret_string = "5*j,.^&;?.%#@!";
string md5code = str.Substring(str.Length - 10, 10);
str = str.Substring(0, str.Length - 10);
string key = smd5(md5code + secret_string);
var UTF8 = new System.Text.UTF8Encoding();
Byte[] bstr = Convert.FromBase64String(str); //将传入串正文做 base64 解码
Byte[] bkey = UTF8.GetBytes(key); //将键转成字节数组
for (int i = 0,k=0; i < bstr.Length; i++,k=i%bstr.Length)
{
bstr[i] ^= bkey[k];
}
return UTF8.GetString(bstr);
return base64_encode(UTF8.GetString(bstr));
}
static string smd5(string str)
{
var md5 = MD5.Create();
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
StringBuilder ret = new StringBuilder();
foreach (byte b in s) ret.Append(b.ToString("x2"));
return ret.ToString();
}
本来以为很简单,没料到 C# 实在是太差劲了
折腾了一天才弄出来,自己完善去吧