DELPHI X64 的MD5。当初思考难点有二:
1.汉字的string是否有Ansi和Utf8的转换
2.不同CPU模式下是否Integer位长不一样。
(INTEGER类型解释:Integer is a generic integer type, which means that its size varies across CPUs and OS platforms. )
本来想按照MISRA规范大刀阔斧的干一场,结果测试发现System:Int32   = Integer;而且测试结果也是都是4位的。怕有些人给了代码都不知道怎么弄,上传到资源里了,但是为何自己看不到。又传了份115http://115.com/file/e7qzc2cp

解决方案 »

  1.   

    http://download.csdn.net/detail/unicodestring/4107797
      

  2.   

    我以前用的也是这套网上流传的md5源码,当时delphi2010还没出来,里面用的都是string和char,pchar。加上个ansi就可以用来计算ansistring的md5了,但是把一个unicodestring传进去让delphi内部转换为ansistring是不对的。例如字符串'测1试',widestring占6字节内存,ansistring只占5字节内存。而且这套源码效率比较低,所以我就抛弃这套源码,自己从indy的源码改写了一套md5源码,x64下计算结果也是正确的,我的博客里面有。
      

  3.   

    认真说起来,xe2下64位md5之所以计算结果与x86下不同,只是条件编译指令写错了而已,导致x64下调用了x86的汇编代码。