I was just having a quick look at the security library examples, specifically the passcode playground

Each time I click on the storage string button I get a different result back, as one would expect

Looking in the debugger ultimately the process is calling CryptoPwhashArgon2idStr which calls the external function in the library libsodium_crypto_pwhash_argon2id_str

However no salt is passed

Clearly the whole process works as does the verify function when called from the library

My only real question is there must be some random element at play here to give a different result each time but it does not appear to need to be passed when decoding is required

So what am I missing ?