Sample code for 30+ languages & platforms
PowerBuilder 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 PowerBuilder Downloads

PowerBuilder
integer li_rc
oleobject loo_Crypt
string ls_Password
string ls_PhcHash
integer li_VerifyResult

loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
if li_rc < 0 then
    destroy loo_Crypt
    MessageBox("Error","Connecting to COM object failed")
    return
end if

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

//  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.
ls_PhcHash = "$argon2id$v=19$m=65536,t=3,p=1$c29tZXJhbmRvbXNhbHQ$3fJ7v1qKcVJ0lHqXjBQZ8mYm3sNTfSPRt0bqDl9kEyM"

//  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.
li_VerifyResult = loo_Crypt.Argon2VerifyPassword(ls_Password,"",ls_PhcHash)
if li_VerifyResult = 1 then
    Write-Debug "The password is verified."
else
    if li_VerifyResult = 0 then
        Write-Debug "The password does not match."
    else
        Write-Debug "The verification could not be performed: " + loo_Crypt.LastErrorText
    end if

end if



destroy loo_Crypt