Anzeigen: Object Pascal C++
Anzeigeeinstellungen

System.Hash.THashSHA2

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

  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; static;
    class function GetHashString(const AString: string; AHashVersion: TSHA2Version = TSHA2Version.SHA256): string; static;
    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;
  public
  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));
#else /* _WIN64 */
    static System::TArray__1<System::Byte> __fastcall GetHashBytes(const System::UnicodeString AData, TSHA2Version AHashVersion = (TSHA2Version)(0x1));
#endif /* _WIN64 */
    static System::UnicodeString __fastcall GetHashString(const System::UnicodeString AString, 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 */
public:
    TSHA2Version FVersion;
    union
    {
        struct
        {
            System::StaticArray<unsigned __int64, 8> FHash64;
        };
        struct
        {
            System::StaticArray<unsigned, 8> FHash;
        };
    };
};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
record
struct
public
System.Hash.pas
System.Hash.hpp
System.Hash System.Hash


Beschreibung

Ein Record, der den SHA-2-Hashtyp implementiert.

THashSHA2 stellt Methoden wie die folgenden bereit:

  • Update: Aktualisiert den Hashwert mit den angegebenen Daten.
  • GetHashString: Gibt den Hashwert des angegebenen Strings zurück.
  • GetHMAC: Gibt eine String-Repräsentation zurück, die der HMAC-Authentifizierung (Hash-Based Message Authentication Code) zugeordnet ist.

Siehe auch

Meine Werkzeuge
Übersetzungen