最简单的计算MD5方法
2015-07-13 15:07
120 查看
原来写过一个计算MD5的程序,是用了一个叫MD5.pas的单元,使用起来还算简单,但还有更简单的办法,安装了indy就会有IdHashMessageDigest单元(delphi 7默认安装indy)
有篇文章教怎么用IdHashMessageDigest计算字符串md5,计算文件md5却没有说,在这里补充一下,先看计算函数:
function TIdHashMessageDigest4.HashValue(AStream: TStream): T4x4LongWordRecord;参数类型是一个流就可以返回T4x4LongWordRecord类型的值,使用function TIdHash128.AsHex(const AValue: T4x4LongWordRecord): string;把T4x4LongWordRecord转换为字符串就可以显示出来,到这里就简单了,把一个文件以流的方式读取,使用HashValue就计算出MD5了,流的使用很简单,TFileStream.Create(const FileName: string; Mode: Word);参数FileName就是文件的路径,Mode就是打开方式,使用fmOpenRead以读方式打开,如果要计算大型文件最好使用线程来操作.以下是实例代码:
在uses添加IdHashMessageDigest
procedure TForm1.Button1Click(Sender: TObject);
var
mymd5:TIdHashMessageDigest5;
begin
mymd5:=TIdHashMessageDigest5.Create;
ShowMessage(mymd5.AsHex(mymd5.HashValue('admin')));//计算字符串admin的MD5
ShowMessage(Copy(mymd5.AsHex(mymd5.HashValue('admin')),9,16));//获取16位字符串MD5
ShowMessage(mymd5.AsHex(mymd5.HashValue(TFileStream.Create('e:\VRMPVOL_CNsp2.iso',fmOpenRead))));//计算文件MD5
mymd5.Free;
end;
有篇文章教怎么用IdHashMessageDigest计算字符串md5,计算文件md5却没有说,在这里补充一下,先看计算函数:
function TIdHashMessageDigest4.HashValue(AStream: TStream): T4x4LongWordRecord;参数类型是一个流就可以返回T4x4LongWordRecord类型的值,使用function TIdHash128.AsHex(const AValue: T4x4LongWordRecord): string;把T4x4LongWordRecord转换为字符串就可以显示出来,到这里就简单了,把一个文件以流的方式读取,使用HashValue就计算出MD5了,流的使用很简单,TFileStream.Create(const FileName: string; Mode: Word);参数FileName就是文件的路径,Mode就是打开方式,使用fmOpenRead以读方式打开,如果要计算大型文件最好使用线程来操作.以下是实例代码:
在uses添加IdHashMessageDigest
procedure TForm1.Button1Click(Sender: TObject);
var
mymd5:TIdHashMessageDigest5;
begin
mymd5:=TIdHashMessageDigest5.Create;
ShowMessage(mymd5.AsHex(mymd5.HashValue('admin')));//计算字符串admin的MD5
ShowMessage(Copy(mymd5.AsHex(mymd5.HashValue('admin')),9,16));//获取16位字符串MD5
ShowMessage(mymd5.AsHex(mymd5.HashValue(TFileStream.Create('e:\VRMPVOL_CNsp2.iso',fmOpenRead))));//计算文件MD5
mymd5.Free;
end;
相关文章推荐
- TreeView节点
- 2 窗口与消息
- maven install时surefire报错
- python正则相关
- leetcode之Add Two Numbers
- 炒股过后...只能好好码代码了
- linux下增加环境变量
- Linux 安装mysql
- 黑马程序员--Objective-C——面向对象三大特性
- 打造无DLL版穿透防火墙Downloader
- linux定时器(crontab)实例
- MySQL 配置优化
- 十四、oracle 数据库管理--管理表空间和数据文件
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- STL源码剖析-----关联式容器
- android 画条横线
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- DELPHI关闭瑞星监控的源代码
- jquery基础 笔记二
- git 忽略已经添加到版本库的文件