C# Google PageRank .net库 (checksum)
今天看到Google PageRank ChecksumPHP代码才发现上次发布的库写的很烂,我根本没有去理解里面的意思,有很多函数是没有必要的,如<< >>位操作都已经是现成的,我怎么还照着vb代码改写,真是愚蠢。
为了弥补我的愚蠢,把php代码改编成的.net库,发布出来。
Google PageRank 链接库下载地址:http://code.knowsky.com/down/2847.html
演示地址:http://pr.csharphack.org/checkpr.aspx
使用实例:
//得到Pagerank值
Console.WriteLine(PRCrack.PageRank.CheckPR("http://www.google.com"));
//得到pagerank checksum
Console.WriteLine(PRCrack.PageRank.OutputCheckSum("http://www.google.com",1));
包含函数:
//输出指定网址的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]&
相关新闻>>
- 发表评论
-
- 最新评论 更多>>