Forum Discussion

aleksandr_tsura's avatar
aleksandr_tsura
Occasional Contributor
10 years ago

MD5 Hash

Hi,



If there is away to test md5 hashed password with delphi script in TestComplete.



/Aleksandr
  • Hi Alexandr,

    DelphiScript doesn't have built-in functions for calculating the MD5 hash, but you can use the .NET System.Security.Cryptography.MD5 class for this. Here's an example:

     

    function getMD5Hash(str); forward;
    procedure Test;
    var strPassword, strHashFromApp, strHashExpected;
    begin
      strPassword := 'test';
      strHashFromApp := '098F6BCD4621D373CADE4E832627B4F6'; // the hash to test
      strHashExpected := getMD5Hash(strPassword);

    if aqString.Compare(strHashFromApp, strHashExpected, false) = 0 then
        Log.Checkpoint(
          'The password''s MD5 hash is correct.',
          'Password: ' + strPassword + #13#10 +
          'MD5 Hash: ' + strHashExpected
        )
    else
        Log.Error(
          'The password''s MD5 hash is incorrect.',
          'Password: ' + strPassword + #13#10 +
          'MD5 hash (expected): ' + strHashExpected + #13#10 +
          'MD5 hash (tested value): ' + strHashFromApp
        );
    end;


    // Returns an MD5 hash of the specified string
    function getMD5Hash(str);
    var md5, inputBytes, hashBytes, hashStr;
    begin
      // Get the MD5 hash as a byte array
      md5 := dotNET.System_Security_Cryptography.MD5.Create_3;
      inputBytes := dotNET.System_Text.Encoding.ASCII.GetBytes_2(str); // Replace ASCII with UTF8 if the string is in UTF-8
      hashBytes := md5.ComputeHash(inputBytes);

      // Convert the byte array to a hex string
      hashStr := dotNET.System.BitConverter.ToString(hashBytes).OleValue;
      hashStr := aqString.Replace(hashStr, '-', '');
      Result := hashStr;
    end; 

     

4 Replies

  • HKosova's avatar
    HKosova
    SmartBear Alumni (Retired)

    Hi Alexandr,

    DelphiScript doesn't have built-in functions for calculating the MD5 hash, but you can use the .NET System.Security.Cryptography.MD5 class for this. Here's an example:

     

    function getMD5Hash(str); forward;
    procedure Test;
    var strPassword, strHashFromApp, strHashExpected;
    begin
      strPassword := 'test';
      strHashFromApp := '098F6BCD4621D373CADE4E832627B4F6'; // the hash to test
      strHashExpected := getMD5Hash(strPassword);

    if aqString.Compare(strHashFromApp, strHashExpected, false) = 0 then
        Log.Checkpoint(
          'The password''s MD5 hash is correct.',
          'Password: ' + strPassword + #13#10 +
          'MD5 Hash: ' + strHashExpected
        )
    else
        Log.Error(
          'The password''s MD5 hash is incorrect.',
          'Password: ' + strPassword + #13#10 +
          'MD5 hash (expected): ' + strHashExpected + #13#10 +
          'MD5 hash (tested value): ' + strHashFromApp
        );
    end;


    // Returns an MD5 hash of the specified string
    function getMD5Hash(str);
    var md5, inputBytes, hashBytes, hashStr;
    begin
      // Get the MD5 hash as a byte array
      md5 := dotNET.System_Security_Cryptography.MD5.Create_3;
      inputBytes := dotNET.System_Text.Encoding.ASCII.GetBytes_2(str); // Replace ASCII with UTF8 if the string is in UTF-8
      hashBytes := md5.ComputeHash(inputBytes);

      // Convert the byte array to a hex string
      hashStr := dotNET.System.BitConverter.ToString(hashBytes).OleValue;
      hashStr := aqString.Replace(hashStr, '-', '');
      Result := hashStr;
    end; 

     

  • HKosova's avatar
    HKosova
    SmartBear Alumni (Retired)
    Hi Alexandr,



    Do you mean to check if an MD5 hash string matches some plain text string? For example (pseudocode):



    if MD5("test") = "098F6BCD4621D373CADE4E832627B4F6"

       ...

    else

      ...



    Or do you mean something else?
  • aleksandr_tsura's avatar
    aleksandr_tsura
    Occasional Contributor
    Yes, with and without salt. I cant find any support för encoding with dalphi script, maybe just use javascript instead



    /Aleksandr





  • aleksandr_tsura's avatar
    aleksandr_tsura
    Occasional Contributor
    Thanks Helen!



    As i thought there is no support för MD5 in delphi script!



    /Aleksandr