---
name: "Authen::Htpasswd"
section: "3pm"
platform: "linux"
package: "libauthen-htpasswd-perl"
version: "0.171-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Authen::Htpasswd"
---

# Authen::Htpasswd(3pm)

interface to read and modify Apache .htpasswd files

## NAME

Authen::Htpasswd - interface to read and modify Apache .htpasswd files

## SYNOPSIS

```
    my $pwfile = Authen::Htpasswd->new('user.txt', { encrypt_hash => 'md5' });

    # authenticate a user (checks all hash methods by default)
    if ($pwfile->check_user_password('bob', 'foo')) { ... }

    # modify the file (writes immediately)
    $pwfile->update_user('bob', $password, $info);
    $pwfile->add_user('jim', $password);
    $pwfile->delete_user('jim');

    # get user objects tied to a file
    my $user = $pwfile->lookup_user('bob');
    if ($user->check_password('vroom', [qw/ md5 sha1 /])) { ... } # only use secure hashes
    $user->password('foo'); # writes to file
    $user->set(password => 'bar', extra_info => 'editor'); # change more than one thing at once

    # or manage the file yourself
    my $user = Authen::Htpasswd::User->new('bill', { hashed_password => 'iQ.IuWbUIhlPE' });
    my $user = Authen::Htpasswd::User->new('bill', 'bar', 'staff', { encrypt_hash => 'crypt' });
    print PASSWD $user->to_line, "\n";
```

## DESCRIPTION

This module provides a convenient, object-oriented interface to Apache-style *.htpasswd* files.

It supports passwords encrypted via MD5, SHA-1, and crypt, as well as plain (cleartext) passwords.

Additional fields after username and password, if present, are accessible via the `"extra_info"` array.

## METHODS

### new

```
    my $pwfile = Authen::Htpasswd->new($filename, \%options);
```

Creates an object for a given *.htpasswd* file. Options:

- encrypt\_hash

  How passwords should be encrypted if a user is added or changed. Valid values are `"md5"`, `"sha1"`,  `"crypt"`, and `"plain"`. Default is `"crypt"`.

- check\_hashes

  An array of hash methods to try when checking a password. The methods will be tried in the order given. Default is `"md5"`, `"sha1"`, `"crypt"`, `"plain"`.

### lookup\_user

```
    my $userobj = $pwfile->lookup_user($username);
```

Returns an Authen::Htpasswd::User object for the given user in the password file.

### all\_users

```
    my @users = $pwfile->all_users;
```

### check\_user\_password

```
    $pwfile->check_user_password($username,$password);
```

Returns whether the password is valid. Shortcut for  `"$pwfile->lookup_user($username)->check_password($password)"`.

### update\_user

```
    $pwfile->update_user($userobj);
    $pwfile->update_user($username, $password[, @extra_info], \%options);
```

Modifies the entry for a user saves it to the file. If the user entry does not exist, it is created. The options in the second form are passed to Authen::Htpasswd::User.

### add\_user

```
    $pwfile->add_user($userobj);
    $pwfile->add_user($username, $password[, @extra_info], \%options);
```

Adds a user entry to the file. If the user entry already exists, an exception is raised. The options in the second form are passed to Authen::Htpasswd::User.

### delete\_user

```
    $pwfile->delete_user($userobj);
    $pwfile->delete_user($username);
```

Removes a user entry from the file.

## AUTHOR

David Kamholz `"dkamholz@cpan.org"`

Yuval Kogman

## SEE ALSO

Apache::Htpasswd.

## COPYRIGHT & LICENSE

```
    Copyright (c) 2005 - 2007 the aforementioned authors.

    This program is free software; you can redistribute
    it and/or modify it under the same terms as Perl itself.
```
