这段代码怎么用能 解释意思吗大神们

qq_28670221 2019-02-15 11:01:48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Security.Cryptography;
using System.Net;
using System.Xml;

namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
string url = "http://app.58.com/api/detail/zpfangchan/36149962795705?v=1&platform=android&version=7.0.1.0&sidDict=%7B%22PGTID%22%3A%22%22%2C%22GTID%22%3A%22101551665202271302713434986%22%7D&format=xml&localname=linyi&commondata=%7B%22cateid%22%3A%2238673%22%2C%22catename%22%3A%22%25e6%2588%25bf%25e5%259c%25b0%25e4%25ba%25a7%22%2C%22filterparams%22%3A%7B%7D%7D";
WebClient webClient = new WebClient();
webClient.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36";
webClient.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
byte[] myDataBuffer = webClient.DownloadData(url);
string data = Encoding.UTF8.GetString(myDataBuffer);
XmlDocument xml = new XmlDocument();
xml.LoadXml(data);
XmlNode xn_tel_info = xml.SelectSingleNode("/root/result/userinfo_area/tel_info");
if (xn_tel_info != null) {
string phone = xn_tel_info.Attributes["content"].Value;
Console.WriteLine(phone);
if (phone.Length > 0)
phone = AES.Decrypt(phone, "crazycrazycrazy1");
Console.WriteLine(phone);
}
Console.ReadLine();
}
}
public class AES {
/// <summary>
/// 加密
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string Encrypt(string str, string key) {
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);

RijndaelManaged rm = new RijndaelManaged {
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};

ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
//string ss = resultArray.ToHexString();
//return Convert.ToBase64String(resultArray, 0, resultArray.Length);
return resultArray.ToHexString();
}
/// <summary>
/// 解密
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string Decrypt(string str, string key) {
if (string.IsNullOrEmpty(str)) return null;
//byte[] toEncryptArray = Convert.FromBase64String(str);
byte[] toEncryptArray = str.ToByteArr();
RijndaelManaged rm = new RijndaelManaged {
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
}
public static class Util {
public static string ToHexString(this byte[] bytes) {
string byteStr = string.Empty;
if (bytes != null || bytes.Length > 0) {
foreach (var item in bytes) {
byteStr += string.Format("{0:X2}", item);

}
}
return byteStr;
}
public static byte[] ToByteArr(this string hex) {
var inputByteArray = new byte[hex.Length / 2];
for (var x = 0; x < inputByteArray.Length; x++) {
var i = Convert.ToInt32(hex.Substring(x * 2, 2), 16);
inputByteArray[x] = (byte)i;
}
return inputByteArray;
}


}
}
...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
实际上,html 往往不如 xml 那么严格。这种程序应该使用一种 html 语法解析器来解析,而不用使用 xml 解析器。
  • 打赏
  • 举报
回复
新建一个.net core的控制台项目起名叫ConsoleApp1,然后复制全部代码,粘贴到唯一的那个文档里去就可以执行了。
二月十六 2019-02-16
  • 打赏
  • 举报
回复
建一个.net项目,把代码考进去执行。
qq_28670221 2019-02-16
  • 打赏
  • 举报
回复
引用 1 楼 胖叔叔写代码 的回复:
用webclient对象访问58的接口网页获取到58返回的xml,从xml制定路径读取数据后打印到console,然后用aes解密后再次打印到console
大神我不是很会用是cs文件我该怎么用
qq_28670221 2019-02-16
  • 打赏
  • 举报
回复
引用 2 楼 以专业开发人员为伍 的回复:
以 http 通讯方式获取网页文本,以 xml 语法解析方式获取其中的 tel_info 下面的 content 属性,然后使用 crazycrazycrazy1 最为密码再来解码一次。
大神我想用怎么利于起来 cs文件
  • 打赏
  • 举报
回复
以 http 通讯方式获取网页文本,以 xml 语法解析方式获取其中的 tel_info 下面的 content 属性,然后使用 crazycrazycrazy1 最为密码再来解码一次。
  • 打赏
  • 举报
回复
用webclient对象访问58的接口网页获取到58返回的xml,从xml制定路径读取数据后打印到console,然后用aes解密后再次打印到console
  • 打赏
  • 举报
回复
引用 8 楼 qq_28670221 的回复:
引用 7 楼 以专业开发人员为伍 的回复:
实际上,html 往往不如 xml 那么严格。这种程序应该使用一种 html 语法解析器来解析,而不用使用 xml 解析器。
这个是抓包得到数据 解析号码
嗯看到了,测试了一下你访问 web 数据服务。你的 HttpRequestHeader.Accept 也未免太杂了一点,模仿浏览器的网页,而不是你自己的声明。
qq_28670221 2019-02-16
  • 打赏
  • 举报
回复
引用 2 楼 胖叔叔写代码 的回复:
新建一个.net core的控制台项目起名叫ConsoleApp1,然后复制全部代码,粘贴到唯一的那个文档里去就可以执行了。
好的我明白了
qq_28670221 2019-02-16
  • 打赏
  • 举报
回复
引用 7 楼 以专业开发人员为伍 的回复:
实际上,html 往往不如 xml 那么严格。这种程序应该使用一种 html 语法解析器来解析,而不用使用 xml 解析器。
这个是抓包得到数据 解析号码

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧