Delphi 中的MD5实现方法及delphi2009和delphi2010中用法

在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。
在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。
示例代码
procedure TForm1.Button1Click(Sender: TObject);
var
MyMD5: TIdHashMessageDigest5;
Digest: T4x4LongWordRecord;
begin
MyMD5 := TIdHashMessageDigest5.Create;
Digest := MyMD5.HashValue('');
ShowMessage('32: ' + MyMD5.AsHex(Digest)); //显示32个字符长度的MD5签名结果
ShowMessage('16: ' + Copy(MyMD5.AsHex(Digest), 9, 16));   //显示16个字符长度的MD5签名结果
end;
说明:
MyMD5.HashValue 函数中可以是一个字符串或是一个流对象,它返回的结果类型为 T4x4LongWordRecord 的MD5签名后结果
MyMD5.AsHex 函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。

-----------------------------------------以上的方法适合Indy9---------------------------------------------

以下为Indy10的用法用delphi2009或delphi2010时以上就会报错了.

type
TMD5 = class(TIdHashMessageDigest5);

function StrToMD5(S: String): String; overload;
function StrToMD5(S: String; L: integer): String; overload;

implementation

function StrToMD5(S: String): String;
var
Md5Encode: TMD5;
begin
Md5Encode:= TMD5.Create;
try
    //Result := Md5Encode.AsHex(Md5Encode.HashValue(S)); // Indy9的写法
    Result := Md5Encode.HashStringAsHex(S);    // Indy10中可以直接HashStringAsHex
finally
    Md5Encode.Free;
end;
end;

function StrToMD5(S: String; L: integer): String;
begin
Result := Copy(StrToMD5(S), 5, L);
end;

转载于:https://www.cnblogs.com/ywangzi/archive/2012/09/20/2694822.html

Delphi 中的MD5实现方法及delphi2009和delphi2010中用法相关推荐

  1. flash AS3.0访问加载的SWF文件中的属性、方法以及类、库中的影片剪辑

    对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件. 我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如: 我们新建一个loaded.f ...

  2. 精通在vfp中调用word的方法_word方框(□)中打钩(√)的5种方法

    有时候,我们在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框[□],需要在里面打钩[√],说实在的,碰到的时候还真有些烦,我想很多人都有这样的感触吧.今天,商务文秘办公培训老师把以 ...

  3. linux中mkswap命令使用方法,mkswap命令_Linux mkswap 命令用法详解:建立和设置SWAP交换分区...

    mkswap命令用于在一个文件或者设备上建立交换分区.在建立完之后要使用sawpon命令开始使用这个交换区.最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般 ...

  4. java中路由的使用方法_java – 在camel路由中使用方法作为生产者

    最后这对我的用例有用. 启动camelcontext如下: CamelContext camelContext = new DefaultCamelContext(); camelContext.ad ...

  5. html中 n怎么使用方法,如何在html注释中使用ngIf?

    AngularJS有限制使用ng-if仅限于attribute由A如下所示.所以,你不能在comment var ngIfDirective = ['$animate', function($anim ...

  6. 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )

    文章目录 一.使用 IDA 打开动态库文件 二.IDA 中查找指定的方法 一.使用 IDA 打开动态库文件 分析 Android SDK 中的 x86 架构的动态库 , 动态库位置 : D:\001_ ...

  7. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

  8. spring中容器启动过程中初始化资源使用方法

    一.定义 在业务场景中,有时需要我们在容器启动过程中加载资源,完成数据的初始化或者配置,需要在调用前加载进spring容器过程中去,有以下一些方法来实现 1.定义静态常量,随着类的生命周期加载而提前加 ...

  9. vue中mixins的使用方法和注意地方

    一.什么是Mixins? mixins(混入),官方的描述是一种分发 Vue 组件中可复用功能的非常灵活的方式,mixins是一个js对象,它可以包含我们组件中script项中的任意功能选项,如dat ...

  10. python重复元素判定去除_Python去除列表中重复元素的方法

    这篇文章主要介绍了Python去除列表中重复元素的方法,实例分析了Python中去除列表重复元素的使用技巧,需要的朋友可以参考下 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参 ...

最新文章

  1. VS2012/13本地发布网站详细步骤(可带数据库)
  2. AI人才「用工荒」如何解决?看看这几家顶级公司的应对策略
  3. 使用etcd+confd管理nginx配置
  4. 数据库相关的系统巡检参考项
  5. TEGer看过来,他二哥带你去看大世界!
  6. python类初始化导入库_Python中optparser库用法实例详解
  7. sprintf()函数
  8. 用 WP7开发包 安装 WP7程序(XAP文件)
  9. vue实现周日历切换(两种方式)
  10. 小福利,e分钟带你爬取海量专利数据并保存为excel文件
  11. 笔记:Python Data Science Toolbox (Part 1)
  12. 禅道服务器修改ip,访问禅道服务器的ip地址
  13. python list diff_PythonList交集,并集,差集的应用
  14. 第一个安卓app应用的开发--环境配置和第一项目创建
  15. Db2 license
  16. Telephony--PhoneAccount
  17. 2021-10-4Bootstrap
  18. 互联网+时代,是更加开放还是封闭
  19. 计算机操作系统32位,计算机操作系统32位和64位的区别
  20. ADAU1452_DSP pop音问题的解决方法

热门文章

  1. Linux下使用rsync最快速删除海量文件的方法分享
  2. asp fso的神奇功能
  3. maven私服的创建和使用
  4. C# 判断输入的字符串是否只包含数字和英文字母
  5. PHP (20140510)深入浅出 JavaScript 变量、作用域和内存 v 0.5
  6. 2013年值得我们学习的网页设计作品【系列二】
  7. Ocelot中文文档-Raft(实验功能不能用于生产环境)
  8. SQL中char、varchar、nvarchar的区别
  9. DbVisualizer的Driver连接Oracle Thin选项不可选
  10. 20155227第十二周课堂实践