public static function hashAndEncrypt(string $password, Key $aesKey): string
    {
        /** @var string $hash */
        $hash = \password_hash(
            Base64::encode(
                \hash('sha384', $password, true)
            ),
            PASSWORD_DEFAULT
        );
        if (!\is_string($hash)) {
            throw new \Exception("Unknown hashing error.");
        }
        return Crypto::encrypt($hash, $aesKey);
    }
public static function hashAndEncrypt(string $password, Key $aesKey): string
    {
        /** @var string $hash */
        $hash = \password_hash(
            Base64::encode(
                \hash('sha384', $password, true)
            ),
            PASSWORD_DEFAULT
        );
        if (!\is_string($hash)) {
            throw new \Exception("Unknown hashing error.");
        }
        return Crypto::encrypt($hash, $aesKey);
    }
public static function hashAndEncrypt ( string $ password , Key $ aesKey ) : string { /** @var string $hash */ $ hash = \ password_hash ( Base64 :: encode ( \ hash ( 'sha384' , $ password , true ) ) , PASSWORD_DEFAULT ) ; if ( ! \ is_string ( $ hash ) ) { throw new \ Exception ( "Unknown hashing error." ) ; } return Crypto :: encrypt ( $ hash , $ aesKey ) ; }
1. Hash password using bcrypt-base64-SHA256
2. Encrypt-then-MAC the hash

@param string $password
@param Key $aesKey
@return string
@throws \Exception
@throws \InvalidArgumentException
1 . Hash password using bcrypt - base64 - SHA256 2 . Encrypt - then - MAC the hash