亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C# Google PageRank .net庫 (checksum)

2019-11-18 19:04:32
字體:
來源:轉載
供稿:網友

  今天看到Google PageRank Checksumphp代碼才發現上次發布的庫寫的很爛,我根本沒有去理解里面的意思,有很多函數是沒有必要的,如<< >>位操作都已經是現成的,我怎么還照著vb代碼改寫,真是愚蠢。
  為了彌補我的愚蠢,把php代碼改編成的.net庫,發布出來。

  Google PageRank 鏈接庫下載地址:http://code.VeVb.com/down/2847.html

  演示地址:http://PR.csharphack.org/checkpr.aspx

  使用實例:
  //得到Pagerank值
  Console.WriteLine(PRCrack.PageRank.CheckPR("  //得到pagerank checksum
  Console.WriteLine(PRCrack.PageRank.OutputCheckSum("
));

  包含函數:
  //輸出指定網址的pagerank checksum
  //參數m_Version指定1,表示得到新版本checksum,Google Toolbar版本>>=2.0.114
  //參數m_Version指定0,表示得到老版本checksum,Google Toolbar版本<2.0.114
  public static string OutputCheckSum(string m_Url,int m_Version)

  //輸出制定網址的pagerank
  public static string CheckPR(string m_Url)
  Checksum 算法源代碼請看詳細內容

1using System;
2
3namespace PRCrack
4{
5 /// <summary>
6 /// Google PageRank的Checksum算法。
7 /// 作者:4111y80y
8 /// 日期:2005年1月22日
9 /// email:sillyboy@china.com
10 /// </summary>
11 class CheckSum
12 {
13  public CheckSum()
14  {
15   //
16   // TODO: 在此處添加構造函數邏輯
17   //
18  }
19
20  uint GOOGLE_MAGIC=0xE6359A60;
21
22  private uint zeroFill(uint a, int b)
23  {
24   checked
25   {
26    uint z = 0x80000000;
27    if (Convert.ToBoolean(z & a))
28    {
29     a = (a>>1);
30     a &= (~z);
31     a |= 0x40000000;
32     a = (a>>(b-1));
33    }
34    else
35    {
36     a = (a>>b);
37    }
38   }
39   return a;
40  }
41
42  private uint[] mix(uint a,uint b,uint c)
43  {
44   a -= b;  a -= c; a ^= (uint)(zeroFill(c,13));
45   b -= c; b -= a; b ^= (uint)(a<<8);
46   c -= a; c -= b; c ^= (uint)(zeroFill(b,13));
47   a -= b; a -= c; a ^= (uint)(zeroFill(c,12));
48   b -= c; b -= a; b ^= (uint)(a<<16);
49   c -= a; c -= b; c ^= (uint)(zeroFill(b,5));
50   a -= b; a -= c; a ^= (uint)(zeroFill(c,3)); 
51   b -= c; b -= a; b ^= (uint)(a<<10);
52   c -= a; c -= b; c ^= (uint)(zeroFill(b,15));
53  
54   return new uint[3]{a,b,c};
55  }
56
57  private uint GoogleCH(uint[] url, uint length, uint init)
58  {
59   if(length==0)
60   {
61    length = (uint)url.Length;
62   }
63   uint a ,b;
64   a=b= 0x9E3779B9;
65   uint c = init;
66   int k = 0;
67   uint len = length;
68   uint[] m_mix=new uint[3];
69   while(len >= 12)
70   {
71    a += (uint)(url[k+0] +(url[k+1]<<8) +(url[k+2]<<16) +(url[k+3]<<24));
72    
73    b += (uint)(url[k+4] +(url[k+5]<<8) +(url[k+6]<<16) +(url[k+7]<<24));
74    c += (uint)(url[k+8] +(url[k+9]<<8) +(url[k+10]<<16)+(url[k+11]<<24));
75    m_mix = mix(a,b,c);
76    a = m_mix[0]; b = m_mix[1]; c = m_mix[2];
77 
78    k += 12;
79    len -= 12;
80   }
81
82   c += length;
83
84   switch(len)              /* all the case statements fall through */
85   {
86    case 11:
87    {
88     c+=(uint)(url[k+10]<<24);
89     c+=(uint)(url[k+9]<<16);
90     c+=(uint)(url[k+8]<<8);
91     b+=(uint)(url[k+7]<<24);
92     b+=(uint)(url[k+6]<<16);
93     b+=(uint)(url[k+5]<<8);
94     b+=(uint)(url[k+4]);
95     a+=(uint)(url[k+3]<<24);
96     a+=(uint)(url[k+2]<<16);
97     a+=(uint)(url[k+1]<<8);
98     a+=(uint)(url[k+0]);
99     break;
100    }
101    case 10:
102    {
103     c+=(uint)(url[k+9]<<16);
104     c+=(uint)(url[k+8]<<8);
105     b+=(uint)(url[k+7]<<24);
106     b+=(uint)(url[k+6]<<16);
107     b+=(uint)(url[k+5]<<8);
108     b+=(uint)(url[k+4]);
109     a+=(uint)(url[k+3]<<24);
110     a+=(uint)(url[k+2]<<16);
111     a+=(uint)(url[k+1]<<8);
112     a+=(uint)(url[k+0]);
113     break;
114    }
115    case 9 :
116    {
117     c+=(uint)(url[k+8]<<8);
118     b+=(uint)(url[k+7]<<24);
119     b+=(uint)(url[k+6]<<16);
120     b+=(uint)(url[k+5]<<8);
121     b+=(uint)(url[k+4]);
122     a+=(uint)(url[k+3]<<24);
123     a+=(uint)(url[k+2]<<16);
124     a+=(uint)(url[k+1]<<8);
125     a+=(uint)(url[k+0]);
126     break;
127    }
128     /* the first byte of c is reserved for the length */
129    case 8 :
130    {
131     b+=(uint)(url[k+7]<<24);
132     b+=(uint)(url[k+6]<<16);
133     b+=(uint)(url[k+5]<<8);
134     b+=(uint)(url[k+4]);
135     a+=(uint)(url[k+3]<<24);
136     a+=(uint)(url[k+2]<<16);
137     a+=(uint)(url[k+1]<<8);
138     a+=(uint)(url[k+0]);
139     break;
140    }
141    case 7 :
142    {
143     b+=(uint)(url[k+6]<<16);
144     b+=(uint)(url[k+5]<<8);
145     b+=(uint)(url[k+4]);
146     a+=(uint)(url[k+3]<<24);
147     a+=(uint)(url[k+2]<<16);
148     a+=(uint)(url[k+1]<<8);
149     a+=(uint)(url[k+0]);
150     break;
151    }
152    case 6 :
153    {
154     b+=(uint)(url[k+4]);
155     a+=(uint)(url[k+3]<<24);
156     a+=(uint)(url[k+2]<<16);
157     a+=(uint)(url[k+1]<<8);
158     a+=(uint)(url[k+0]);
159     break;
160    }
161    case 5 :
162    {
163     b+=(uint)(url[k+4]);
164     a+=(uint)(url[k+3]<<24);
165     a+=(uint)(url[k+2]<<16);
166     a+=(uint)(url[k+1]<<8);
167     a+=(uint)(url[k+0]);
168     break;
169    }
170    case 4 :
171    {
172     a+=(uint)(url[k+3]<<24);
173     a+=(uint)(url[k+2]<<16);
174     a+=(uint)(url[k+1]<<8);
175     a+=(uint)(url[k+0]);
176     break;
177    }
178    case 3 :
179    {
180     a+=(uint)(url[k+2]<<16);
181     a+=(uint)(url[k+1]<<8);
182     a+=(uint)(url[k+0]);
183     break;
184    }
185    case 2 :
186    {
187     a+=(uint)(url[k+1]<<8);
188     a+=(uint)(url[k+0]);
189     break;
190    }
191    case 1 :
192    {
193     a+=(uint)(url[k+0]);
194     break;
195    }
196     /* case 0: nothing left to add */
197   }
198   m_mix = mix(a,b,c);
199   /*-------------------------------------------- report the result */
200   return m_mix[2];
201  }
202
203  private uint GoogleCH(string url, uint length)
204  {
205   uint[] m_urluint=new uint[url.Length];
206   for(int i=0;i<url.Length;i++)
207   {
208    m_urluint[i]=url[i];
209   }
210   return GoogleCH(m_urluint,length,GOOGLE_MAGIC);
211  }
212
213  private uint GoogleCH(string sURL)
214  {
215   return GoogleCH(sURL,0);
216  }
217
218  private uint GoogleCH(uint[] url, uint length)
219  {
220   return GoogleCH(url, length, GOOGLE_MAGIC);
221  }
222
223  private uint[] c32to8bit(uint[] arr32)
224  {
225   uint[] arr8=new uint[arr32.GetLength(0)*4+3];
226
227   for(int i=0;i<arr32.GetLength(0);i++)
228   {
229    for (int bitOrder=i*4;bitOrder<=i*4+3;bitOrder++)
230    {
231     arr8[bitOrder]=arr32[i]&255;
232     arr32[i]=zeroFill(arr32[i], 8);
233    }   
234   }
235   return arr8;
236  }
237
238  //新算法,ToolBar 版本>>=2.0.114
239  public string CalculateChecksum(string sURL)
240  { 
241   uint ch=GoogleCH("info:" + sURL);
242   
243   ch = (((ch/7) << 2) | (((uint)(ch%13))&7));
244
245   uint[] prbuf = new uint[20];
246   prbuf[0] = ch;
247   for(int i = 1; i < 20; i++) {
248    prbuf[i] = prbuf[i-1]-9;
249   }
250   ch = GoogleCH(c32to8bit(prbuf), 80);
251
252   return string.Format("6{0}",ch);
253  }
254
255  //老算法,ToolBar 版本<2.0.114
256  public string CalculateChecksumOld(string sURL)
257  { 
258   uint ch=GoogleCH("info:" + sURL);
259   
260   string CalculateChecksum = "6" + Convert.ToString((ch));
261   return CalculateChecksum;
262  }
263 }
264}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美刺激性大交免费视频| 欧美成人精品一区| 欧美日韩国产第一页| 欧美黄色www| 91亚洲精品在线观看| 日韩一区视频在线| 欧美乱大交xxxxx| 欧美男插女视频| 欧美日韩国产综合视频在线观看中文| 日本亚洲欧美三级| 精品国内产的精品视频在线观看| 欧美大尺度激情区在线播放| 成人黄色免费在线观看| 国产成人avxxxxx在线看| 亚洲日本欧美中文幕| 国产欧美一区二区三区久久人妖| 51久久精品夜色国产麻豆| 欧美日韩国产页| 久久久精品亚洲| 国产精品视频网站| 国产日韩在线看片| 欧美一区二三区| 国产+人+亚洲| 午夜剧场成人观在线视频免费观看| 91免费电影网站| 亚洲自拍中文字幕| 久色乳综合思思在线视频| 中文字幕精品www乱入免费视频| 最近2019好看的中文字幕免费| 欧美日韩国产中文精品字幕自在自线| 久久资源免费视频| 久久人人爽人人爽人人片av高请| 色婷婷综合成人| 亚洲精品久久久久国产| 粉嫩av一区二区三区免费野| 国产一区二区三区久久精品| 欧美在线性爱视频| 91精品国产综合久久香蕉最新版| 一区二区在线视频播放| 亚洲免费视频网站| 欧美人与性动交a欧美精品| 精品亚洲aⅴ在线观看| 欧美色图在线视频| 欧美超级免费视 在线| 中文字幕日韩精品有码视频| 一本大道亚洲视频| 亚洲欧美日韩在线高清直播| 最新69国产成人精品视频免费| 美女国内精品自产拍在线播放| 97久久超碰福利国产精品…| 国产精品高清在线| 日韩在线欧美在线国产在线| 亚洲综合第一页| 97国产真实伦对白精彩视频8| 欧美成人在线免费视频| 欧美日韩成人精品| 久久久日本电影| 2019亚洲日韩新视频| 欧美性xxxx极品hd满灌| 狠狠躁天天躁日日躁欧美| 日韩精品免费在线| 国产不卡精品视男人的天堂| 91久久夜色精品国产网站| 欧美精品一区二区三区国产精品| 久久久精品一区| 中文字幕成人在线| 5278欧美一区二区三区| 日韩精品免费在线视频观看| 91免费精品视频| 中文字幕亚洲欧美在线| 久久精品视频99| 欧美激情在线观看视频| 日韩中文在线观看| 欧美日韩亚洲一区二区| 亚洲成人a**站| 久久免费视频网| 国产69精品99久久久久久宅男| xxx一区二区| 97成人在线视频| 成人黄色在线观看| 日韩欧美国产成人| 日韩欧美精品网站| 欧美三级欧美成人高清www| 国产手机视频精品| 欧美巨猛xxxx猛交黑人97人| 国产一区二区在线播放| 7m精品福利视频导航| 亚洲自拍偷拍第一页| 色噜噜狠狠狠综合曰曰曰88av| 亚洲欧洲日产国码av系列天堂| 性色av一区二区三区红粉影视| 国产精品美女视频网站| 国产成人精品久久久| 成人国产亚洲精品a区天堂华泰| 国产精品v片在线观看不卡| 日韩欧美在线免费观看| 亚洲一区二区久久久| 精品美女永久免费视频| 国产丝袜一区二区三区| 一本一本久久a久久精品综合小说| 日韩黄色av网站| 国产久一一精品| 琪琪亚洲精品午夜在线| www.欧美精品一二三区| 中文字幕欧美在线| 日韩av在线影视| 亚洲视频一区二区三区| 国产香蕉精品视频一区二区三区| 欧美高清激情视频| 欧美另类老肥妇| 91久久久久久| 亚洲精品丝袜日韩| 国产成人精品一区二区在线| 久久精品国产亚洲一区二区| 欧美日韩国产成人高清视频| 精品久久香蕉国产线看观看亚洲| 国产欧美一区二区三区久久人妖| 美女久久久久久久| 亚洲国语精品自产拍在线观看| 国产精品海角社区在线观看| 日韩中文字幕免费| 国产精品99久久久久久人| 欧美日韩午夜视频在线观看| 精品国产一区二区三区久久久狼| 亚洲一区二区三区久久| www亚洲精品| 亚洲美女av电影| 欧美日韩免费网站| 久久免费福利视频| 国产精品欧美亚洲777777| 欧美理论在线观看| 欧美一区二区大胆人体摄影专业网站| 最近2019年中文视频免费在线观看| 国产精品女人网站| 国产成人精品最新| 国内精品一区二区三区| 欧美一区二区三区免费观看| 中文字幕亚洲一区二区三区| 97精品国产97久久久久久| 美女视频黄免费的亚洲男人天堂| 国产精品欧美久久久| 久久五月天色综合| 久热99视频在线观看| 91免费的视频在线播放| 亚洲精品久久久久久久久久久久| 在线精品视频视频中文字幕| 精品在线小视频| 亚洲一区美女视频在线观看免费| 欧美黑人性生活视频| 黑人巨大精品欧美一区二区| 亚洲一级片在线看| 国产精品成人免费视频| 九色精品美女在线| 最近2019年好看中文字幕视频| 国产视频久久久| 日韩av网站大全| 欧美激情啊啊啊| 亚洲一区中文字幕| 国产精彩精品视频| 亚洲人成在线一二| 亚洲电影免费观看高清完整版| 精品视频偷偷看在线观看| 欧美成人免费在线视频| www.亚洲一区|