How do I hash a string with Delphi? [closed]

2019-01-11 13:10发布

How do I make an MD5 hash of a string with Delphi?

8条回答
霸刀☆藐视天下
2楼-- · 2019-01-11 13:34

If you want an MD5 digest and have the Indy components installed, you can do this:

uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;

with TIdHashMessageDigest5.Create do
try
    Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
    Free;
end;

Most popular algorithms are supported in the Delphi Cryptography Package:

  • Haval
  • MD4, MD5
  • RipeMD-128, RipeMD-160
  • SHA-1, SHA-256, SHA-384, SHA-512,
  • Tiger

Update DCPCrypt is now maintained by Warren Postma and source can be found here.

查看更多
叼着烟拽天下
3楼-- · 2019-01-11 13:34

This is a modification of devstopfix's answer which was accepted.

In current Indy version you can hash strings and streams more easily. Example:

function MD5String(str: String): String;
begin
  with TIdHashMessageDigest5.Create do
    try
      Result := HashStringAsHex(str);
    finally
      Free;
    end;
end;

Use HashString, HashStringAsHex, HashBytes, HashBytesAsHex, HashStream, HashStreamAsHex. The advantage is that you can also specify a text encoding

查看更多
等我变得足够好
4楼-- · 2019-01-11 13:34

If all you want to do is use a dictionary, and you're not looking for security then:
In Delphi 2009 and higher, hash values for strings can be created with

BobJenkinsHash(Value, Length(Value) * SizeOf(Value), 0)

where Value is a string.

http://docwiki.embarcadero.com/VCL/en/Generics.Defaults.BobJenkinsHash

查看更多
不美不萌又怎样
5楼-- · 2019-01-11 13:34

You can also use the WindowsCrypto API with Delphi:

There is a unit in there that wraps all the CryptoAPI. You can also use Lockbox, which is now open source.

In the end you can support pretty much any Hash algorithms with Delphi. The Indy example is probably the closest you will get to natively in Delphi since Indy is included with most versions of Delphi. For the rest you will need to either use a library or write some more code to access the CryptoAPI or implement it yourself.

查看更多
家丑人穷心不美
6楼-- · 2019-01-11 13:42

I usually use DCPCrypt2 (Delphi Cryptography Package) from David Barton (City in the Sky).

It is also contains the following Encryption Algorithms:

  • Blowfish
  • Cast 128
  • Cast 256
  • DES, 3DES
  • Ice, Thin Ice, Ice2
  • IDEA
  • Mars
  • Misty1
  • RC2, RC4, RC5, RC6
  • Rijndael (the new AES)
  • Serpent
  • Tea
  • Twofish

Update DCPCrypt is now maintained by Warren Postma and source can be found here.

查看更多
闹够了就滚
7楼-- · 2019-01-11 13:45

Spring For Delphi project - http://www.spring4d.org - has implementation for a number of SHAxxx hashes, MD5 hash, and also number of CRC functions

查看更多
登录 后发表回答