Sample code for 30+ languages & platforms
DataFlex Requires Chilkat v11.6.0+

Verify a Password against an Argon2 Hash

Demonstrates Crypt2.Argon2VerifyPassword, which verifies a password against a PHC-format Argon2 hash string. The cost parameters are read from the hash string, so none need to be supplied.

Background. The method returns an integer: 1 if the password matched, 0 if it did not match, and -1 if the verification could not be performed at all (the hash string was invalid, its parameters were out of range, or an internal failure occurred, with the reason in LastErrorText). Always test for a match with == 1, never with != 0.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoCrypt
    String sPassword
    String sPhcHash
    Integer iVerifyResult
    String sTemp1

    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End

    //  The password should come from a secure source rather than being hard-coded.
    Move "correct horse battery staple" To sPassword

    //  A PHC-format Argon2 hash string previously produced by Argon2HashPassword.  All cost options
    //  (variant, version, memory cost, iterations, parallelism, salt, hash length) are read from this
    //  string, so none need to be supplied.
    Move "$argon2id$v=19$m=65536,t=3,p=1$c29tZXJhbmRvbXNhbHQ$3fJ7v1qKcVJ0lHqXjBQZ8mYm3sNTfSPRt0bqDl9kEyM" To sPhcHash

    //  Verify the password.  Pass an empty options string when no secret (pepper) or ad was used.
    //  The method returns one of three values:  1 = the password matched, 0 = it did not match, and
    //  -1 = the verification could not be performed (the hash string was invalid or unusable).
    //  Always test for a match with == 1.
    Get ComArgon2VerifyPassword Of hoCrypt sPassword "" sPhcHash To iVerifyResult
    If (iVerifyResult = 1) Begin
        Showln "The password is verified."
    End
    Else Begin
        If (iVerifyResult = 0) Begin
            Showln "The password does not match."
        End
        Else Begin
            Get ComLastErrorText Of hoCrypt To sTemp1
            Showln "The verification could not be performed: " sTemp1
        End

    End



End_Procedure