最简单的计算MD5方法

原来写过一个计算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;

时间: 2024-08-17 11:34:55

最简单的计算MD5方法的相关文章

简单工厂VS工厂方法

前言: GOF经典的23种设计模式在IT界现已被广为流传.由于比较长时间没有用了,个人对于不同模式与模式之间的区别也渐渐模糊,故开始重温设计模式的思想.也希望更给对设计模式感兴趣的朋友些许的启发. ---------------------------------- 需求情境: 设计一款具有基本计算功能的计算器. ----------------------------------- 初次看到这个需求,假如你从没有接触过设计模式,那么你应该很快可以把基本的逻辑语句用10行以内的代码搞定. 但是,

Java设计模式(一) 设计模式初探——简单工厂和工厂方法模式

一.引言 在面向对象的编程中,创建对象是最基本也是最常用的一种操作,合理的对象创建方法对提高代码的复用性和降低模块之间的耦合来说极其重要,而工厂模式就是专门为合理创建对象而提出的.在GoF总结的23种常用的设计模式中,工厂模式就有3种,分别为简单工厂.工厂方法和抽象工厂,本文将结结合简单的例子对面向对象的编程.简单工厂模式和工厂方法模式进行较为详细介绍,并给出完整的代码示例,至于抽象工厂方法,我将在后续的博客中进行详细地介绍. 借助于面向对象编程的封装特性,我们将一个完整事物的不同功能模块封装成

MD5方法

//计算MD5值的方法 不可逆性 /// <summary> /// 计算单个字符的MD5方法 /// </summary> /// <param name="str"></param> /// <returns></returns> /// this是扩展的方法 必须定义在static类中 public static string CalcMD5(this string str) { byte[] bytes =

简单而粗暴的方法画任意阶数Bezier曲线

简单而粗暴的方法画任意阶数Bezier曲线 虽然说是任意阶数,但是嘞,算法原理是可以到任意阶数,计算机大概到100多阶就会溢出了 Bezier曲线介绍 本文代码 背景 在windows的OpenGL环境中,使用鼠标在屏幕上选点,并以点为基础画出Bezier曲线 初始化 鼠标操作 3阶以内Bezier曲线 n阶Bezier曲线 初始化 创建窗口,初始化大小.显示模式.添加显示和鼠标等回调函数,设置背景颜色等. 完成之后,定义两个全局的int类型的vector 用于存储鼠标在窗口中选择的点.同时定义

node快速计算md5

最近在做一个文件上传的项目,当上传文件达到几十GB,几百GB后在文件上传99%后,需要等待非常长的时间文件才能完成上传.通过埋点打印时间,发现md5计算时间非常长. 为了校验文件传输的完整性需要在文件上传结束后校验文件的完整性,md5值就用来校验完整性,所以这一步不能少. 解决方案 通过网上查找资料,MD5计算工具在计算大文件md5值时也不是一次性计算出来的,也是通过分片的方式累加计算出来的. 所以我们在上传大文件时,本来上传的思路就是分片上传,我们只需要对每块分片进行md5计算,最后累加计算m

【转】设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解. 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例. 不修改代码的话,是无法扩展的. 工厂方法 工厂方法是针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例. 在同一等级结构中,支持增加任意产品. 抽象工厂 抽象工厂是应

R语言:用简单的文本处理方法优化我们的读书体验

前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实就是继续讲一下用R语言读书的事情啦,讲讲怎么用它里面简单的文本处理方法,来优化我们的读书体验,如果读邮件和读代码也算阅读的话..用的代码超级简单,不涉及其他包 这里讲两个示例,结尾再来吐槽和总结. 1)R-Blogger订阅邮件拆分 2) R代码库快速阅读方法 不在博客园上阅读时才会看到的,这篇博文归 http://www.cnblogs.com/weibaar所有 仅保证在博客园博客上的排版干净利索

.Net下简单地实现MD5加密

 1.WebView 显示进度条 在onCreate事件里写: [java] view plaincopy WebView myWebView = (WebView) findViewById(R.id.webView1); final Activity activity = this; myWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int prog

R语言中最简单的向量赋值方法

R语言中最简单的向量赋值方法简介: 1. 生成等差数列的向量x x <- 1:10 #将x向量赋值为1 2 3 4 5 6 7 8 9 10 结果为 > x [1] 1 2 3 4 5 6 7 8 9 10 2. 将x的值全部修改成0 x[] <- 0 #非常简洁的赋值方法,建议使用 x[1:length(x)] <- 0 #不建议使用的赋值方法 结果为: > x[] <- 0 > x [1] 0 0 0 0 0 0 0 0 0 0 3.使用seq函数 x <