paspio 1.0.0

A password entropy calculator.
Documentation
# paspio

[![docs](https://img.shields.io/docsrs/paspio)](https://docs.rs/paspio/latest/paspio)
[![version](https://img.shields.io/crates/v/paspio)](https://crates.io/crates/paspio)

paspio, short for _pasvorta entropio_, is a password entropy calculator/library.

## What is password entropy?

The [entropy of a password](https://en.wikipedia.org/wiki/Password_strength#Entropy_as_a_measure_of_password_strength)
measures its unpredictability against brute force attacks in terms of _bits_,
other common techniques of password cracking include dictionary attacks, which
this tool **does not** cover.

## Notice

This tool has not been audited by any third-party entities, and I am
in no way a certified expert in the security field. Use this software
at your own risk.

## Limitations

This tool doesn't cover the use of emojis, or any other character sets
besides the latin alphabet, see "[How does it calculate
entropy](#how-does-it-calculate-entropy)" for more information.

## What is this tool useful for?

paspio solves the simple need of verifying password entropy
**locally**.

## How does it calculate entropy?

```bash
Entropy = L * log2(R)
```

|              Symbol set | Elements                          | Cardinality | Notes               |
|------------------------:|:----------------------------------|:-----------:|:--------------------|
| Lowercase latin letters | [a-z]                             | 26          |                     |
| Uppercase latin letters | [A-Z]                             | 26          |                     |
|                  Digits | [0-9]                             | 10          |                     |
|                 Symbols | !"#$%&'()*+,-.:;<=>?@[]^_`{/\|\\} | 32          | Whitespace included |

Where:
- `L` is the length of the password.
- `R` is the sum of the cardinality of each set a password exists in.

## Usage

### As a program

Pass one or more passwords to paspio to get their entropy.

```bash
paspio "liuLe9ohjub8hu2ie" # 101.22 bits
```

Pipe a pwgen-generated password to paspio.

```bash
pwgen -sync 20 1 | paspio # 137.65 bits
```

### As a library

Add the following to your project's `Cargo.toml`:

```toml
paspio = "0.3"
```

## Installation

### [C]https://crates.io/crates/paspio/argo

```
cargo install paspio
```

### [A]https://aur.archlinux.org/packages/paspio-git/rch User Repository

```
git clone https://aur.archlinux.org/paspio-git.git
cd paspio-git
makepkg -si
```

### Build from source

```
git clone https://git.sr.ht/~grtcdr/paspio
cd paspio
cargo build --release
```

## Acknowledgements

- Thank you to Federico Torrielli for shipping and maintaining paspio
  in the Arch User Repository.