Delphi 中的MD5实现方法及delphi2009和delphi2010中用法
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中用法相关推荐
- flash AS3.0访问加载的SWF文件中的属性、方法以及类、库中的影片剪辑
对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件. 我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如: 我们新建一个loaded.f ...
- 精通在vfp中调用word的方法_word方框(□)中打钩(√)的5种方法
有时候,我们在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框[□],需要在里面打钩[√],说实在的,碰到的时候还真有些烦,我想很多人都有这样的感触吧.今天,商务文秘办公培训老师把以 ...
- linux中mkswap命令使用方法,mkswap命令_Linux mkswap 命令用法详解:建立和设置SWAP交换分区...
mkswap命令用于在一个文件或者设备上建立交换分区.在建立完之后要使用sawpon命令开始使用这个交换区.最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般 ...
- java中路由的使用方法_java – 在camel路由中使用方法作为生产者
最后这对我的用例有用. 启动camelcontext如下: CamelContext camelContext = new DefaultCamelContext(); camelContext.ad ...
- html中 n怎么使用方法,如何在html注释中使用ngIf?
AngularJS有限制使用ng-if仅限于attribute由A如下所示.所以,你不能在comment var ngIfDirective = ['$animate', function($anim ...
- 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
文章目录 一.使用 IDA 打开动态库文件 二.IDA 中查找指定的方法 一.使用 IDA 打开动态库文件 分析 Android SDK 中的 x86 架构的动态库 , 动态库位置 : D:\001_ ...
- 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...
- spring中容器启动过程中初始化资源使用方法
一.定义 在业务场景中,有时需要我们在容器启动过程中加载资源,完成数据的初始化或者配置,需要在调用前加载进spring容器过程中去,有以下一些方法来实现 1.定义静态常量,随着类的生命周期加载而提前加 ...
- vue中mixins的使用方法和注意地方
一.什么是Mixins? mixins(混入),官方的描述是一种分发 Vue 组件中可复用功能的非常灵活的方式,mixins是一个js对象,它可以包含我们组件中script项中的任意功能选项,如dat ...
- python重复元素判定去除_Python去除列表中重复元素的方法
这篇文章主要介绍了Python去除列表中重复元素的方法,实例分析了Python中去除列表重复元素的使用技巧,需要的朋友可以参考下 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参 ...
最新文章
- VS2012/13本地发布网站详细步骤(可带数据库)
- AI人才「用工荒」如何解决?看看这几家顶级公司的应对策略
- 使用etcd+confd管理nginx配置
- 数据库相关的系统巡检参考项
- TEGer看过来,他二哥带你去看大世界!
- python类初始化导入库_Python中optparser库用法实例详解
- sprintf()函数
- 用 WP7开发包 安装 WP7程序(XAP文件)
- vue实现周日历切换(两种方式)
- 小福利,e分钟带你爬取海量专利数据并保存为excel文件
- 笔记:Python Data Science Toolbox (Part 1)
- 禅道服务器修改ip,访问禅道服务器的ip地址
- python list diff_PythonList交集,并集,差集的应用
- 第一个安卓app应用的开发--环境配置和第一项目创建
- Db2 license
- Telephony--PhoneAccount
- 2021-10-4Bootstrap
- 互联网+时代,是更加开放还是封闭
- 计算机操作系统32位,计算机操作系统32位和64位的区别
- ADAU1452_DSP pop音问题的解决方法