delphi md5算法

(2015-08-14 15:18)
标签: 

md5

分类: DelphiXE8
XE8新带了一个单元文件:System.Hash,其实,实现了三个类,分别是:
THash
THashMD5
THashSHA1
原生实现对MD5及SHA1的支持!

以MD5为例,很容易取一个串的MD5值。

procedure TForm40.Button2Click(Sender: TObject);
var
  md5:THashMD5;
begin

  Label1.Text:=md5.GetHashString(edit1.Text);//生成32字符长度的MD5
//也可以这样:
    md5:=THashMD5.Create;
    md5.Update(edit1.Text);
    Label1.Text:=md5.HashAsString;
end;

THashMD5是记录类型,所以不用释放建立的实例。

THashMD5同时还提供了HMAC支持:

Label1.Text:=md5.GetHMAC(Edit1.Text,'红鱼儿');//生成32字符长度的HMAC.

这不能不说是XE8的进步,复杂的MD5等算法,对于Delphi开发者也可以直接使用了,简单、方便!
后记:XE9增加了SHA2支持!

附:Hash 算法及其应用
---------------
什么是 Hash
Hash 的
阅读(135) ┆ 评论(0) ┆ 转载(1) ┆ 收藏(0)
 
标签: 

delphi

 

it

分类: DelphiXE8
将数字转换大写的函数,改自这里,原文在Delphi XE8下不能正常转换。
Function MoneyConvert(mmje:real): string;
const
  s1: string = '零壹贰叁肆伍陆柒捌玖';
  s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万';
  Function StrTran(const S, s1, s2: string): string;
  begin
      Result := S.Replace(s1, s2, [rfReplaceAll]);
  end;
var
  S, dx: string;
  i, Len: Integer;
begin
  if mmje < 0 then
  begin
     dx := '负';
      mmje := -mmje;
  end;
  S := Format('%.0f', [mmje * 100]);
  Len := s.Length;
  for i := 0 to Len-1 do
    dx := dx + s1.Substring(Ord(s.Chars[i]) - Ord('0') , 1) +s2.substring(Len-i-1,1);

  dx := StrTra
阅读(119) ┆ 评论(0) ┆ 转载(0) ┆ 收藏(0)
 
  分类: DelphiXE8
在自定义的Record类型中,使用string,不小心会造成内存泄漏,用下面的写法,则不会,在Xe8下测试通过。

type

PMyRecord=^TMyRecord;
TMyRecord=record
  i:Integer;
  s:string;
end;

var
  p:PMyRecord;

begin
  p:=new(PMyRecord);//分配内存
  p.i:=100;//这里我简写了,也可写成p^.i
  p.s:='aaaaaa';
  dispose(p);//释放内存,这里是重点,p已经是PMyRecord类型,所以不用转换,如果是一个无类型的指针,则要做类型转换,如dispose(PMyRecord(p));

end;
posted @ 2015-08-25 10:18  LAOS  阅读(1372)  评论(0编辑  收藏  举报