delphi - डेल्फी में एचएमएसी-एसएचए 256




amazon-web-services hmac (4)

एचएमएसी सिर्फ एक फ़ंक्शन है जो कुछ परिभाषित नियमों के अनुसार हैश की गणना करने के लिए SHA256 का उपयोग करता है। यदि आप विकिपीडिया देख रहे हैं तो इसमें एक छद्मकोण उदाहरण है

आप सिस्टम में .NET के एचएमएसी कक्षा में भी कॉल कर सकते हैं। सुरक्षा। COM इंटरप्रोफ़ द्वारा क्रिप्टोग्राफ़ी।

मुझे अमेज़ॅन वेब सेवाओं एपीआई के लिए एचएमएसी-एसएचए 256 के हस्ताक्षर बनाने की जरूरत है I पुरानी डीसीपीक्रिप्ट लाइब्रेरी में शा 256 रूटीन है लेकिन एचएमएसी हस्ताक्षर नहीं करता है। किसी को भी एक मुफ्त हैशिंग पुस्तकालय का उपयोग कर सकते हैं मैं जानता हूँ?


थोड़ी अधिक खोज के बाद मुझे ओपनस्ट्रीम एसईसी मिला - ऐसा लगता है कि यह कुछ साल पहले छोड़ दिया गया था, लेकिन अभी भी डी 2007 में संकलित किया गया है।

http://sourceforge.net/projects/openstrsecii/

अमेज़ॅन के लिए एक एचएमएसी -256 उत्पन्न करना वास्तव में सरल है:

StrToMime64(HMACString(haSHA256, SecretKey, 32, DataToHash));

इंडी स्थापित डेल्फी जहाज, और इंडी में एक TIdHMACSHA256 वर्ग है:

uses
  IdGlobal, IdHashSHA, IdHMAC, IdHMACSHA1, IdSSLOpenSSL;

function CalculateHMACSHA256(const value, salt: String): String;
var
  hmac: TIdHMACSHA256;
  hash: TIdBytes;
begin
  LoadOpenSSLLibrary;
  if not TIdHashSHA256.IsAvailable then
    raise Exception('SHA256 hashing is not available!');
  hmac := TIdHMACSHA256.Create;
  try
    hmac.Key := IndyTextEncoding_UTF8.GetBytes(salt);
    hash := hmac.HashValue(IndyTextEncoding_UTF8.GetBytes(value));
    Result := ToHex(hash);
  finally
    hmac.Free;
  end;
end;