System.Hash.THashSHA2

From RAD Studio API Documentation
Jump to: navigation, search

Delphi

 THashSHA2 = record
 public type
 TSHA2Version = (SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256);
 private const
 CBuffer32Length = 64;
 CBuffer64Length = 128;
 private
 FBuffer: array [0..127] of Byte;
 FBitLength: UInt64;
 FIndex: Cardinal;
 FFinalized: Boolean;
 procedure Initialize(AVersion: TSHA2Version);
 procedure CheckFinalized; inline;
 procedure Compress; inline;
 procedure Compress32;
 procedure Compress64;
 procedure Finalize; inline;
 procedure Finalize32;
 procedure Finalize64;
 function GetDigest: TBytes;
 procedure Update(const AData: PByte; ALength: Cardinal); overload;
 public
 class function Create(AHashVersion: TSHA2Version = TSHA2Version.SHA256): THashSHA2; static; inline;
 procedure Reset; inline;
 procedure Update(const AData; ALength: Cardinal); overload;
 procedure Update(const AData: TBytes; ALength: Cardinal = 0); overload; inline;
 procedure Update(const Input: string); overload; inline;
 function GetBlockSize: Integer; inline;
 function GetHashSize: Integer; inline;
 function HashAsBytes: TBytes; inline;
 function HashAsString: string; inline;
 class function GetHashBytes(const AData: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 class function GetHashString(const AString: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): string; overload; static; inline;
 class function GetHashBytes(const AStream: TStream; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 class function GetHashString(const AStream: TStream; AHashVersion: TSHA2Version = TSHA2Version.SHA256): string; overload; static; inline;
 class function GetHashBytesFromFile(const AFileName: TFileName; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; static;
 class function GetHashStringFromFile(const AFileName: TFileName; AHashVersion: TSHA2Version = TSHA2Version.SHA256): string; static; inline;
 class function GetHMAC(const AData, AKey: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): string; static; inline;
 class function GetHMACAsBytes(const AData, AKey: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 class function GetHMACAsBytes(const AData: string; const AKey: TBytes; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 class function GetHMACAsBytes(const AData: TBytes; const AKey: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 class function GetHMACAsBytes(const AData, AKey: TBytes; AHashVersion: TSHA2Version = TSHA2Version.SHA256): TBytes; overload; static;
 private
 case FVersion: TSHA2Version of
 TSHA2Version.SHA224,
 TSHA2Version.SHA256: (FHash: array[0..7] of Cardinal);
 TSHA2Version.SHA384,
 TSHA2Version.SHA512,
 TSHA2Version.SHA512_224,
 TSHA2Version.SHA512_256: (FHash64: array[0..7] of UInt64);
 end;

C++

struct DECLSPEC_DRECORD THashSHA2
{
public:
 enum DECLSPEC_DENUM TSHA2Version : unsigned char { SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256 };
private:
 static const System::Int8 CBuffer32Length = System::Int8(0x40);
 static const System::Byte CBuffer64Length = System::Byte(0x80);
 System::StaticArray<System::Byte, 128> FBuffer;
 unsigned __int64 FBitLength;
 unsigned FIndex;
 bool FFinalized;
 void __fastcall Initialize(TSHA2Version AVersion);
 void __fastcall CheckFinalized(void);
 void __fastcall Compress(void);
 void __fastcall Compress32(void);
 void __fastcall Compress64(void);
 void __fastcall Finalize(void);
 void __fastcall Finalize32(void);
 void __fastcall Finalize64(void);
#ifndef _WIN64
 System::DynamicArray<System::Byte> __fastcall GetDigest(void);
#else /* _WIN64 */
 System::TArray__1<System::Byte> __fastcall GetDigest(void);
#endif /* _WIN64 */
 void __fastcall Update(const System::PByte AData, unsigned ALength)/* overload */;
public:
 static THashSHA2 __fastcall Create(TSHA2Version AHashVersion = (TSHA2Version)(0x1));
 void __fastcall Reset(void);
 void __fastcall Update(const void *AData, unsigned ALength)/* overload */;
#ifndef _WIN64
 void __fastcall Update(const System::DynamicArray<System::Byte> AData, unsigned ALength = (unsigned)(0x0))/* overload */;
#else /* _WIN64 */
 void __fastcall Update(const System::TArray__1<System::Byte> AData, unsigned ALength = (unsigned)(0x0))/* overload */;
#endif /* _WIN64 */
 void __fastcall Update(const System::UnicodeString Input)/* overload */;
 int __fastcall GetBlockSize(void);
 int __fastcall GetHashSize(void);
#ifndef _WIN64
 System::DynamicArray<System::Byte> __fastcall HashAsBytes(void);
#else /* _WIN64 */
 System::TArray__1<System::Byte> __fastcall HashAsBytes(void);
#endif /* _WIN64 */
 System::UnicodeString __fastcall HashAsString(void);
#ifndef _WIN64
 static System::DynamicArray<System::Byte> __fastcall GetHashBytes(const System::UnicodeString AData, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#else /* _WIN64 */
 static System::TArray__1<System::Byte> __fastcall GetHashBytes(const System::UnicodeString AData, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#endif /* _WIN64 */
 static System::UnicodeString __fastcall GetHashString(const System::UnicodeString AString, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#ifndef _WIN64
 static System::DynamicArray<System::Byte> __fastcall GetHashBytes(System::Classes::TStream* const AStream, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#else /* _WIN64 */
 static System::TArray__1<System::Byte> __fastcall GetHashBytes(System::Classes::TStream* const AStream, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#endif /* _WIN64 */
 static System::UnicodeString __fastcall GetHashString(System::Classes::TStream* const AStream, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#ifndef _WIN64
 static System::DynamicArray<System::Byte> __fastcall GetHashBytesFromFile(const System::Sysutils::TFileName AFileName, TSHA2Version AHashVersion = (TSHA2Version)(0x1));
#else /* _WIN64 */
 static System::TArray__1<System::Byte> __fastcall GetHashBytesFromFile(const System::Sysutils::TFileName AFileName, TSHA2Version AHashVersion = (TSHA2Version)(0x1));
#endif /* _WIN64 */
 static System::UnicodeString __fastcall GetHashStringFromFile(const System::Sysutils::TFileName AFileName, TSHA2Version AHashVersion = (TSHA2Version)(0x1));
 static System::UnicodeString __fastcall GetHMAC(const System::UnicodeString AData, const System::UnicodeString AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1));
#ifndef _WIN64
 static System::DynamicArray<System::Byte> __fastcall GetHMACAsBytes(const System::UnicodeString AData, const System::UnicodeString AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::DynamicArray<System::Byte> __fastcall GetHMACAsBytes(const System::UnicodeString AData, const System::DynamicArray<System::Byte> AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::DynamicArray<System::Byte> __fastcall GetHMACAsBytes(const System::DynamicArray<System::Byte> AData, const System::UnicodeString AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::DynamicArray<System::Byte> __fastcall GetHMACAsBytes(const System::DynamicArray<System::Byte> AData, const System::DynamicArray<System::Byte> AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#else /* _WIN64 */
 static System::TArray__1<System::Byte> __fastcall GetHMACAsBytes(const System::UnicodeString AData, const System::UnicodeString AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::TArray__1<System::Byte> __fastcall GetHMACAsBytes(const System::UnicodeString AData, const System::TArray__1<System::Byte> AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::TArray__1<System::Byte> __fastcall GetHMACAsBytes(const System::TArray__1<System::Byte> AData, const System::UnicodeString AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
 static System::TArray__1<System::Byte> __fastcall GetHMACAsBytes(const System::TArray__1<System::Byte> AData, const System::TArray__1<System::Byte> AKey, TSHA2Version AHashVersion = (TSHA2Version)(0x1))/* overload */;
#endif /* _WIN64 */
private:
 TSHA2Version FVersion;
 union
 {
 struct
 {
 System::StaticArray<unsigned __int64, 8> FHash64;
 };
 struct
 {
 System::StaticArray<unsigned, 8> FHash;
 };
 };
};

Properties

Type Visibility Source Unit Parent
record
struct
public
System.Hash.pas
System.Hash.hpp
System.Hash System.Hash

Description

A record that implements the SHA-2 hash type.

THashSHA2 provides methods such as:

  • Update: Updates the hash value with the provided data.
  • GetHashString: Returns hash value of the provided String.
  • GetHashStringFromFile: Returns hash value of the provided file.
  • GetHMAC: Returns a String representation associated with the HMAC authentication (Hash-based message authentication code).

See Also

Retrieved from "https://docwiki.embarcadero.com/Libraries/Tokyo/e/index.php?title=System.Hash.THashSHA2&oldid=768672"