He visto que por la red no hay un metodo simple para calcular el hash de una cadena o un archivo asi que aqui dejo mi pequeño grano de arena al asunto
Código Delphi
[-]uses
system.hash;
function calcularHash(const mensaje,key:string;version:TSHA2version):string;
var
hash:THashSHA2;
begin
result:=thash.DigestAsString(hash.GetHMACAsBytes(mensaje,skey,SHA256));
end;
en el ejemplo de arriba la funcion devuelve el hash SHA256 de una cadena y su key y la version puede ser: SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256.
en realidad no es solo calcula SHA2.
Aqui tienen la documentacion de la libreria que al parecer es poco conocida, pero muy util para el proposito
Espero que a alguien le sirva. Saludos
p/d: La libreria fue probada solamente en Delphi 10 Seattle, no puedo asegurar en que versiones este incluida