注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

yeye55的博客

编程就象品一杯清茶,清淡却又深厚。

 
 
 

日志

 
 
关于我

宅男一只,喜欢编程。没事的时候就喜欢抱着电脑看看电影、看看动漫、听听音乐、打打网游、逛逛论坛。清静的时候喜欢专研编程技术,但是发现自己至今仍然只是一只三脚猫。

网易考拉推荐

用Delphi实现MD5编码  

2011-11-03 11:14:01|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

字符串编码

  我刚刚开始学习Delphi,所以编一个实现MD5编码的程序小试身手一下。该程序按照RFC1321标准设计。因为RFC1321文档自带了一个C语言的范例程序,所以整个编写过程只是把代码翻译成PASCAL语言,再封装成类。这个程序只能对字符串进行编码,不过稍加修改就可以对文件进行编码。

  由于我刚刚学Delphi英语又不好,可能把代码写的很幼稚,并且大量使用汉语拼音做标识符。程序的不足之处还请高手们指点,小弟在此先行谢过!

  压缩包中有整个项目的源代码,其中用以编码的类MD5在单元文件SF_MD5.PAS中,MD5类的bmsj方法用以写入字符串数据,MD5bm属性用以返回MD5编码,注意MD5bm返回后会清空缓冲数据。参考以下调用代码:

var
    m : MD5;
    s1,s2 : string;
begin
    m:=MD5.Create;
    m.bmsj('a');
    s1:=m.MD5bm; //'a'返回0CC175B9C0F1B6A831C399E269772661
    s2:=m.MD5bm; //空数据返回D41D8CD98F00B204E9800998ECF8427E
end;

  使用bmsj时可以将数据分批写入。参考以下调用代码:

var
    m : MD5;
    s : string;
begin
    m:=MD5.Create;
    m.bmsj('a');
    m.bmsj('b');
    m.bmsj('c');
    s:=m.MD5bm; //'abc'返回900150983CD24FB0D6963F7D28E17F72
end;

  项目文件的下载(点这里

  可执行文件的下载(点这里

发布第二版,文件编码

  这次对MD5类的bmsj过程进行了重载如下:使得bmsj可以对Delphi中的任意数据进行编码。

procedure bmsj(p : Pointer; n :  Cardinal); overload; //编码数据1
第一个参数是指向数据的指针,
第二个参数是数据的长度,以字节为单位。

  单元文件SF_MD5.PAS中添加了WJMD5类,派生于线程TThread类,可以对文件进行编码,由于是线程所以在编码过程中可以暂停,中止编码。程序的外观进行了如下修改:以适用于文件编码。

  项目文件的下载(点这里

  可执行文件的下载(点这里

附注

  2005年的时候,我刚刚开始学习Delphi的程序设计。以上这个程序就是在这个时期写的,所以写的比较烂。另外我已经忘记当初把这个程序发布到哪个论坛上了。现在把程序发到这里,作为一种回忆。

  评论这张
 
阅读(307)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017