河南聯通(網通)寬帶賬號算號器C#源碼

前幾日用了win7 X64系統,想轉換一下聯通寬帶賬號,從網上下了個軟件,X64的機器竟然運行不了。

於是就上網搜這個源碼,但是搜了半天,搜到一個PHP的和一個ASP的,可是我還看不懂這兩種。只好硬着頭皮照着改成C#的吧。

於是一邊搜索對應的PHP或ASP的方法的意思一邊用C#對應的方法去改。

下面是代碼:

  1. using System;

  2. using System.Text.RegularExpressions;

  3. /*

  4. * Desc:河南聯通寬帶賬號算號

  5. * Author:大寶http://dabao.im,http://dabao2010.blog.51cto.com

  6. * Date:2012-2-26 11:03

  7. */

  8. namespace CncDecode

  9. {

  10. class Program

  11. {

  12. staticvoid Main(string[] args)

  13. {

  14. //測試一下

  15. Console.Write("請輸入要轉換的網通賬號:");

  16. string num = Console.ReadLine();

  17. Regex r = new Regex(@"^[0-9]+$");

  18. string num1 = "";

  19. if (r.Match(num).Success)

  20. num1 = num;

  21. else

  22. return;

  23. CNC.DeCode(ref num1);

  24. Console.WriteLine("賬號{0}轉換後爲{1}", num, num1);

  25. Console.ReadLine();

  26. }

  27. }

  28. /// <summary>

  29. /// 解碼類

  30. /// </summary>

  31. staticclass CNC

  32. {

  33. /// <summary>

  34. /// 解碼

  35. /// </summary>

  36. /// <param name="num">號碼</param>

  37. publicstaticvoid DeCode(refstring num)

  38. {

  39. //這一堆的什麼東西也看不懂,也查不到有這麼個算法,估計是聯通程序員自己寫的一個私有算法

  40. string ustr = "9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";

  41. string yinzi = "25-35-182-236-43-41-53-18-226-215-24-117-35-201-52-17";

  42. string[] yzarr = yinzi.Split('-');

  43. Array.Reverse(yzarr);//反轉一個一維數組中元素的順序

  44. int l = 37, k = 0, u1, x;

  45. char[] dec_str = newchar[num.Length];

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

  47. {

  48. for (int j = 0; j < ustr.Length; j++)

  49. {

  50. if (num[i] == ustr[j])

  51. {

  52. if (i < 16)

  53. {

  54. u1 = Convert.ToInt32(yzarr[i]);

  55. }

  56. else

  57. {

  58. x = i % 16;

  59. u1 = Convert.ToInt32(yzarr[x]);

  60. }

  61. u1 = ((u1 ^ (l * 3)) ^ k) + j;

  62. x = u1 % 62;

  63. dec_str.SetValue(ustr[x], i);

  64. l = l ^ (x + 9433);

  65. break;

  66. }

  67. }

  68. if (dec_str[i].ToString() == "")

  69. dec_str.SetValue(ustr[i], i);

  70. k = k + 5;

  71. }

  72. num = "2:" + newstring(dec_str);

  73. }

  74. }

  75. }

算號器演示圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章