码迷,mamicode.com
首页 > Windows程序 > 详细

C# URL¶ÌµØַѹËõËã·¨¼°¶ÌÍøÖ·Ô­Àí½âÎö

时间:2017-12-14 03:54:33      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:+=   ica   one   val   inter   splay   like   链接   size   

?ìí??·ó|ó?ò??-?úè?1ú?÷′ó?¢2?é??aê?á÷DDá??eà′?£àyè?QQ?¢2?μ?url.cn£?D?àéμ?sinaurl.cnμè?£

?ò???úQQ?¢2?é?·¢2?í??·μ?ê±oò£??¢2??á×??ˉ?D±eí??·£?2¢????×a??£?àyè?£ohttp://url.cn/2hytQx

?aê2?′òa?a?ù×?μ?£??-òò?ò??óD?a?ù??μ?£o

?¢2??T??×?êy?a140×?ò?ì?£????′è?1??ò??Dèòa·¢ò?D?á??óé?襣?μ?ê??a??á??ó·?3£μ?3¤£?ò??áóú???üòa??ó??ò???úèYμ?ò?°??a·ù£??a???¨ê?2??ü±??êDíμ?£??ùò??ìí??·ó|????éúá??£

?ìí??·?éò??ú?ò??????à??éò?oüo?μ????a·???URL??DD1üàí?£óDò?2?·?í??·?éò??áo-??±?á|£?1???μèD??¢£??a?ù?ò???éò?í¨1yó??§μ??ù±¨£?íêè?1üàí?a??á??ó??2?3????ú?ò??μ?ó|ó??D£?ó|?aí??ùμ?URLí¨1y?ó?ü??·¨??oó£?μ?μ?μ?μ??·ê?ò??ùμ??£

?ò???éò???ò??μáDμ?í??·??DDá÷á?£?μ??÷μèí3??£?íú?ò3?′ó?àêyó??§μ?1?×¢μ?£??a?ùóDà?óú?ò????????μ?oóD?1¤×÷?üo?μ?×÷3???2??£

??êμò?é?èyμ?′?ê???è?1?μ?£?òò?a?ú?ò?ó??à′μ?2?·??????D?áó|ó?μ?£??ùò??íá??aá?ò???£??????èà′?′?′?ìí??·ó3é???·¨μ?àí??£¨í?é??òμ?μ?×êá?£?£o

??3¤í??·md5éú3é32??????′?£?·??a4??£?????8??×??ú£?

???a?????-?·′|àí£?è?8??×??ú£??????′3é16????′?ó?0x3fffffff(30??1)ó?2ù×÷£??′3?1y30??μ?o???′|àí£?

?a30??·?3é6??£???5??μ?êy×?×÷?a×???±íμ??÷òyè?μ?ì??¨×?·?£?òà′???DD??μ?6??×?·?′?£?

×üμ?md5′??éò???μ?4??6??′?£?è?à???μ?è?òaò????í?é×÷?a?a??3¤urlμ??ìurlμ??·£?

oü?òμ¥μ?àí??£??ò??2¢2?ò??¨?μμ?μ?μ?URLê??¨ò?μ?£?μ?ê??ò???ü1?è?3?4×éURL£??a?ù??o?2??á3???ì?′óμ????′?£

????à′?′?′3ìDò2?·?£o


′ú??è???:


public   static   string [] ShortUrl( string  url)

{

//?éò?×??¨ò?éú3éMD5?ó?ü×?·?′??°μ??ìo?KEY

string  key =  ?±Leejor?± ;

//òaê1ó?éú3éURLμ?×?·?

string [] chars =  new   string []{

?±a?± , ?±b?± , ?±c?± , ?±d?± , ?±e?± , ?±f?± , ?±g?± , ?±h?± ,

?±i?± , ?±j?± , ?±k?± , ?±l?± , ?±m?± , ?±n?± , ?±o?± , ?±p?± ,

?±q?± , ?±r?± , ?±s?± , ?±t?± , ?±u?± , ?±v?± , ?±w?± , ?±x?± ,

?±y?± , ?±z?± , ?±0?? , ?±1?? , ?±2?? , ?±3?? , ?±4?? , ?±5?? ,

?±6?? , ?±7?? , ?±8?? , ?±9?? , ?±A?± , ?±B?± , ?±C?± , ?±D?± ,

?±E?± , ?±F?± , ?±G?± , ?±H?± , ?±I?± , ?±J?± , ?±K?± , ?±L?± ,

?±M?± , ?±N?± , ?±O?± , ?±P?± , ?±Q?± , ?±R?± , ?±S?± , ?±T?± ,

?±U?± , ?±V?± , ?±W?± , ?±X?± , ?±Y?± , ?±Z?±

};

//??′?è?í??·??DDMD5?ó?ü

string  hex = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key + url,  ?±md5?? );

string [] resUrl =  new   string [4];

for  ( int  i = 0; i < 4; i++)

{

//°??ó?ü×?·?°′??8??ò?×é16????ó?0x3FFFFFFF??DD??ó?????

int  hexint = 0x3FFFFFFF & Convert.ToInt32( ?±0x?±  + hex.Substring(i * 8, 8), 16);

string  outChars =  string .Empty;

for  ( int  j = 0; j < 6; j++)

{

//°?μ?μ?μ??μó?0x0000003D??DD??ó?????£?è?μ?×?·?êy×échars?÷òy

int  index = 0x0000003D & hexint;

//°?è?μ?μ?×?·??à?ó

outChars += chars[index];

//??′??-?·°′??óòò?5??

hexint = hexint >> 5;

}

//°?×?·?′?′?è???ó|?÷òyμ?ê?3?êy×é

resUrl[i] = outChars;

}

return  resUrl;

}

???ú?éò??±?óê1ó???·?·¨£??éò?μèμ???????×é?μ£o


′ú??è???:


ShortUrl(http://www.jb51.net)[0];  //μ?μ??μfAVfui

ShortUrl(http://www.jb51.net)[1];  //μ?μ??μ3ayQry

ShortUrl(http://www.jb51.net)[2];  //μ?μ??μUZzyUr

ShortUrl(http://www.jb51.net)[3];  //μ?μ??μ36rQZn

?ú′?·??a??URLμ?êy?Y·???£??ò??è?í???TTServer£?óDμ??óó??éò???óDìy?μ1y£?????ê??a??êy?Y?aμ??ééü£o

Tokyo Cabinet ê?è?±?è? Mikio Hirabayashi£¨??á???D?£?¤?¥ú?`¥? ?a·¢μ?ò???DBMêy?Y?a(×¢£o′ó???|?|μ?DBMêy?Y?aqdbm?íê????a·¢μ?)£???êy?Y?a?áD′·?3£?ì?£insert:0.4sec/1000000 recordes(2500000qps)£?D′è?100íòêy?Y??Dèòa0.4???£search:0.33sec/1000000 recordes (3000000 qps)£??áè?100íòêy?Y??Dèòa0.33???£

?éò??′μ???óú×?μ?ààDíμ?êy?YKey/Valueμ?2é?ˉ£??a??êy?Y?a?éò??μê??ò???°??1yD§?ê·?3£??μ?£????ò??è?′?μ?D??é£?ó?à′??short url/long urlμ??????ùo?2?1y?£

???μí3ê1ó?6???ì??×?·?à′±íê?è?o?3¤?èμ?í??·?£ óDD§μ?×?·?′ú??ê?ASCII ??A’μ?’Z’oí’0??μ?’5??£????D????×?·?°üo?2 ^ 5£¨32£?×′ì??£  6?ì??×?·??éó?óú????32 ^ 6£¨1073741824£?μ?í??·

ê×?è£???Dèòaò???êy?Y?a±íà′′?′¢oí?ì?÷??ó3é?μ?í??·?£


′ú??è???:


CREATE TABLE mappedURL (μ?CREATE TABLE mappedURL£¨

shortCode char (6) not  null ,

lognURL  text not null ,

PRIMARY KEY  shortCodeInd (shortCode),

);

??′?£???Dèòa?¨ò?ò?????·¨??3¤μ?URLó3é?μ??ìμ?URL?£ ??·¨é???ò??-?ééü1yá??£

μúèy£???Dèòa′′?¨ò???í?ò3£?′óêy?Y?aμ??ìí??·μ?ó3é??òμ??-ê?μ?URL,2¢???¨?ò???£

?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a

MD5 ò??-±????aá?£?òò′?2???3y1¥?÷???±?ì?àí? MD5 μ? url êμ????òa??μ?μ??é?üD??£è?1?2??????a???é??£?md5 collision μ??é?üD?ó|??ê??°??μíμ?£?1à?????òóDéú???ê???′2?μ??£

áíía??2??÷°×?°?àí?μ?URL??′???3?à′μ??ü?μ±?D???ê?ò??ùμ??±μ?êμ?êó?í??áê?ê2?′?£?í???àí?μ? URL ??ó|2?í?μ??ü?μ£?ò?°?ò22??á?ì3éì?′óμ?à?·?°é£???óD 6 ??μ?×???êy×?×éo????éò?èY?é??ê?òú??±??ˉ?£

?ò?yê?óDmd5 collisionμ?μ£D?2??ê?a???êìaμ??£?àí?μ?URLòa??ó|?àí?μ??ü?μê?òò?a??ò???URLμ??·??Dèòa?¨ò?μ???ó|μ?êy?Y?a?Dμ?ò?ì?±íêy?Y£?μ??±?óó?URLà′2é?ˉ?á±è???y£?òò?a£o

??òa′?′¢μ?URLoí?à1?μ?????êy?Yá?·?3£′ó?£

???òóDD?URL?áoü3¤£??ùò?òaó?text×????£

??è?1?1t?£3??¨ò?μ??ü?μó?varcharà′′?′¢£??ù?ù?Y?a???ü?μè¥2é?ˉ?í?á·?3£·?±??ì?Y?£

?í??gità???μ?object hash£? ???°?ù±?é?2?ó?????3?í?°é?£

bit.lyμèurl shorter·t??ê????′êμ??μ?£?

Dè2?Dèòa′óhash?ü?μ·′?ò2é?òurl£? è?1?óD?a?ùμ?òa?ó£? url???¨Dèòa′?ò???μ?·?£? ?a?ù?í?éò??ú3?í?μ?ê±oò??DD?ùé¢áD

MD5ê?128??hash??£¨4????êy£???????êy4??×??ú£??£òò′?£?ò???urlμ?MD5??£?óD2μ?128′?·?£¨?′2e128£????é?ü?£??òa?ò3?à′μ?á???urlμ?MD5???àμèμ??é?üD?£?ê?2e128·???ò?£??′r=2e-128

?ùè?url?-MD5oó2?è?êy?Y?a£?μúò???url2?è?μ?2??á·¢éú???′£?μú?t??MD52?è?ê±£??ü?úμúò?ì????′μ????êê?r?£μúèyì?url2?è?ê±£????′???ê ê?2?ár£?ò?′?ààí?£?μúnì?2?è?ê±·¢éú???′μ????êê?(n-1)?ár?£n??MD5??£????DóDá??????′μ????êê??aD????ê?óoí?££¨1£?2£?3£??-+(n- 1))?ár = (1/2)?án?á(n-1)?ár

??óún??MD5??μ??ˉo?£?′??ú???′μ????êê?£¨1/2)*(n/2e64)e2

òò′?£???óDn′óμ??éò?ó?2e64±è?a£?2?Dèòa?????üμ?3?í??êìa?£??2μ?64′?·??1ê?oü′óμ??£

?ùò?£???òa2?ê???òa1¥?÷£?ò?°?ó|ó?ê?2?ì??áóDcollisionμ?

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C# URL?ìμ??·?1????·¨?°?ìí??·?-àí?a??

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23108.html






相关内容

C# URL¶ÌµØַѹËõËã·¨¼°¶ÌÍøÖ·Ô­Àí½âÎö

标签:+=   ica   one   val   inter   splay   like   链接   size   

原文地址:http://www.cnblogs.com/paobuke/p/8035619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!