动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C#应用
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C#应用 ]的信息

本月文章推荐
.用浏览器来接收C# 的程序返回的时.
.利用c#制作简单的留言板(1).
.用Visual C#来清空回收站(2).
.C#中使用SendMessage.
.将PUBS中的所有用户表内容分别用.
.如何在控件的设计时得到窗体设计.
.百万程序员的苦恼-选择VB.NET还.
.关于C#中timer类 在C#里关于定时.
.C#多线程-不同线程之间通过事件委.
.利用C#实现标准的 Dispose模式.
.C#投票作弊程序制作思路.
.C#中对注册表的操作.
.用C#开发.NET CF 蓝牙通信模块.
.c#中设置快捷键.
.C#反编译微软MSDN2003的帮助文档.
.利用c#制作简单的留言板(3) .
.如何让数据访问过程更透明.
.C#一个象棋游戏程序.
.图片保存到数据库和从数据库读取.
.C#入门代码.

C# Google PageRank .net库 (checksum)

发表日期:2005-12-19 |


  今天看到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]<<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}

上一篇:用C#实现FTP搜索引擎 人气:10060
下一篇:C#中的委托与事件[翻译] 人气:8977
浏览全部C#的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成