public static function hash(HiddenString $password, EncryptionKey $secretKey, string $level = KeyFactory::INTERACTIVE) : string { $kdfLimits = KeyFactory::getSecurityLevels($level); // First, let's calculate the hash $hashed = \Sodium\crypto_pwhash_str($password->getString(), $kdfLimits[0], $kdfLimits[1]); // Now let's encrypt the result return Crypto::encrypt(new HiddenString($hashed), $secretKey); }
public function testEncrypt() { $key = new EncryptionKey(\str_repeat('A', 32)); $hash = Password::hash('test password', $key); $this->assertTrue(is_string($hash)); $this->assertTrue(Password::verify('test password', $hash, $key)); $this->assertFalse(Password::verify('wrong password', $hash, $key)); }