恩恩……我不是要說王小雲。
我很奇怪.Net提供的MD5CryptoServiceProvider。
它的hash結果是16位位元組的……可是……可是……md3的标準不是32位的麼?有沒有生成32 bytes的.net hash庫呢?
然後,md5.ComputHash()的傳回值是Byte(),在轉換成為String的時候也是問題多多……
偶嘗試使用如下的代碼:
pass跟word都是byte()……從理論上來說,經過這樣的轉換後,他們的值應該是一樣的……但是……就是不一樣……
偶煩了一整天……
一步步跟蹤後,發現問題出現在GetString這個函數上……它莫名其妙的把參數給“閹割”了……byte本來應該是8bit的……但是,它硬是把它看成是7bit的……pass數組中所有大于127的成員都被它減去127,然後才儲存為相應的字元……
一開始,偶用的是System.Text.Encoding.ASCII.GetString,出現這樣的問題我很可以了解……因為ASCII characters本來就是7bit的……但是,UTF8是8 bit的啊!為什麼還是有同樣的問題??
抓狂了很久……
然後發現……将Encoding.UTF8.GetString改成Encoding.Unicode.GetString便一切順利……
同樣的……還有Encoding.Unicode.GetBytes
Encoding.UTF8跟Encoding.Unicode究竟有什麼差別呢?wondering……
第一次在部落格園發表東西……隻有這麼一點點東西跟大家分享……希望大家喜歡……
恩恩……如果有哪位高手能夠幫我分解一下下面的12個數字……或者,幫我生成一個md5 checksum為d024eac470132c7116d8ce8aa8409b8e 的檔案……小弟感激不盡……
呼呼……
真是不懂怎麼說……
偶的老師每個星期都給偶們一個challenge……上個星期讓我們分解12個由兩個質數相乘得出的和數:
1. 493
2. 256548911
3. 2399557933351623797
4. 210310495050718271668932997799
5. 5219254103003703248412332507126942904289
6. 34140838649750908282137081486336105530338286525339
7. 26120139124694484823073438881531527448842206694017879257399
8. 34113382106518403034089080670201226290000493673280463812207641540001
9. 19740251040767405574233389115508940970737495408555910993986136804039840322619
10.
426055778843715546911426241170028083801153110479514928372937805356899606068793017289031315
11. 3289007170346419389268432117474969098559951410750551704185508113661644 618795 57593438309755004771178529082663841211
12. 376913201530163994815348263715589013050380788944367849136239626758283441135193033330577085433896070716021436404900942549606745997
偶的CPU拼死拼活也才将1-5給分解出來……後面的7個……55555555……
這個星期又讓我們找md5碰撞……他給了一個檔案,md5 checksum是:d024eac470132c7116d8ce8aa8409b8e
要我們找出另一個md5 checksum一樣或者類似的檔案……所謂類似,是說md5 hash出來的結果跟上面的有越多的連續相同的字元越好……位置也要一樣……比方說:
9f038cc6a7ec9baad98c9dfc1aa6e3b8便是有一個相同的……
9f038ac6a7ec9baad98c9dfc1aa6e3b8便是有兩個相同的……
能找到四個以上的便給獎勵……好像是一杯咖啡……恩……如果哪位大俠能夠幫到偶,偶就送他一個gmail賬号……從某種意義上說,gmail賬号跟咖啡是一樣的……
本文轉自 Wuvist 51CTO部落格,原文連結:http://blog.51cto.com/wuvist/847768