zoukankan      html  css  js  c++  java
  • 关于MD5的一些东西

    恩恩……我不是要说王小云。

    我很奇怪.Net提供的MD5CryptoServiceProvider。
    它的hash结果是16位字节的……可是……可是……md3的标准不是32位的么?有没有生成32 bytes的.net hash库呢?

    然后,md5.ComputHash()的返回值是Byte(),在转换成为String的时候也是问题多多……

    偶尝试使用如下的代码:

    pass = md5.ComputeHash(data)
    temp = System.Text.Encoding.UTF8.GetString(pass)
    word = System.Text.Encoding.UTF8.GetBytes(temp)

    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账号跟咖啡是一样的……
  • 相关阅读:
    Win10 x64 + CUDA 10.0 + cuDNN v7.5 + TensorFlow GPU 1.13 安装指南
    工作十一年总结
    Anaconda3 指南
    Win Linux 双系统安装指南
    OBS 录制视频 自己留存
    React Starter Kit 中文文档
    .NET Framework 系统版本支持表
    Hyper-V和其他虚拟机共存 【转】
    Docker入门03——Container
    Docker入门02——Dockerfile详解
  • 原文地址:https://www.cnblogs.com/wuvist/p/41989.html
Copyright © 2011-2022 走看看