2017-09-22 13:34:55 +00:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/Luzifer/password )](https://goreportcard.com/report/github.com/Luzifer/password)
![](https://badges.fyi/github/license/Luzifer/password)
![](https://badges.fyi/github/downloads/Luzifer/password)
![](https://badges.fyi/github/latest-release/Luzifer/password)
2015-05-02 13:42:41 +00:00
# Luzifer / password
2019-01-01 14:07:57 +00:00
The intention of this project is to provide a fast and secure way to generate one or more passwords using a CLI tool, a HTTPs page or a HTTPs API.
For the security of the passwords there are several assertions:
- The password may not contain pattern found on the keyboard or in alphabet
- The password must have 3 or 4 different character groups in it depending on whether special characters are requested
- The password may not have repeating characters
- The API generator does not transmit or store any data about the generated passwords
2015-05-02 13:42:41 +00:00
## Usage
### Via Web
2019-01-01 14:07:57 +00:00
My service [Secure Password ](https://passwd.fyi/ ) is powered by this app and will provide you with secure passwords.
2015-05-02 13:42:41 +00:00
2017-09-22 15:56:31 +00:00
### Via [Alfred](https://www.alfredapp.com/)
2019-01-01 14:07:57 +00:00
_(No longer actively maintained as I no longer use OSX / Alfred. The current version stays until it gets reported to be broken and will then get removed.)_
2017-09-22 15:56:31 +00:00
1. Ensure you do have Alfred 3 and have enabled the Powerpack
2. Download and open the `PasswordGenerator.alfredworkflow` from [Github releases ](https://github.com/Luzifer/password/releases/latest )
3. Let Alfred install the workflow
2018-03-21 10:15:05 +00:00
4. Generate passwords using `pwd 12` , with special characters `pwd 12 s` or [XKCD style ](https://xkcd.com/936/ ) `pwd 4 x`
2017-09-22 15:56:31 +00:00
The workflow is set up to automatically check for updates once a day. If you want to check for updates manually open Alfred, enter `pwd workflow:update` and press enter.
2015-05-02 13:42:41 +00:00
### Via CLI
2017-09-22 13:32:05 +00:00
1. Download the compiled binary from [Github releases ](https://github.com/Luzifer/password/releases/latest )
2015-05-02 13:42:41 +00:00
2. Generate your password:
2019-01-01 14:07:57 +00:00
```console
$ ./password get -h
generate and return a secure random password
Usage:
password get [flags]
Flags:
-d, --date prepend current date to XKCD style passwords (default true)
-h, --help help for get
-j, --json return output in JSON format
-l, --length int length of the generated password (default 20)
-n, --number int number of passwords to generate (default 1)
-s, --special use special characters in your password
-x, --xkcd use XKCD style password
$ ./password get
2015-05-02 13:42:41 +00:00
Vzupi4IaPbXmSQEX9A4e
2015-05-02 14:02:19 +00:00
2019-01-01 14:07:57 +00:00
$ ./password get -l 32 -s
2015-05-02 14:02:19 +00:00
}d.sks(4J$2G]x52=k)WAN{M68LxEg}%
2019-01-01 14:07:57 +00:00
$ ./password get -l 4 -x
20190101.SeashellSupporterTumbleweedGeneral
2015-05-02 13:42:41 +00:00
```
### Via API
2015-05-02 14:02:19 +00:00
- `/v1/getPassword` - Retrieve a password from the API
2019-01-01 14:07:57 +00:00
- `date=true` - Set to `false` no to prepend the date to XKCD-style passwords
- `length=20` - Specify the length of the password to generate (the API only supports values between 4 and 128 - for more characters use the CLI)
2015-05-02 14:02:19 +00:00
- `special=false` - Set to `true` to enable special characters
2019-01-01 14:07:57 +00:00
- `xkcd=false` - Set to `true` to enable XKCD-style passwords
2015-05-02 14:02:19 +00:00
#### Self-Hosted
2017-09-22 13:32:05 +00:00
1. Download the compiled binary from [Github releases ](https://github.com/Luzifer/password/releases/latest )
2015-05-02 14:02:19 +00:00
2. Run the API server:
2019-01-01 14:07:57 +00:00
```console
$ ./password serve -h
start an API server to request passwords
2015-05-02 14:02:19 +00:00
2019-01-01 14:07:57 +00:00
Usage:
password serve [flags]
2015-05-02 14:02:19 +00:00
2019-01-01 14:07:57 +00:00
Flags:
-h, --help help for serve
--port int port to listen on (default 3000)
2015-05-02 14:02:19 +00:00
```
3. Request your password using `http://localhost:3000/v1/getPassword?length=20&special=true`
#### Hosted
2019-01-01 14:07:57 +00:00
```console
$ curl https://passwd.fyi/v1/getPassword?length=20& special=true
2015-05-02 14:02:19 +00:00
0M4L-1[lT:@2&7,p,o-;
```
2015-05-02 13:42:41 +00:00
## Benchmark / Test
Tests and benchmark are run by Travis CI at every push to this repository:
[![Build Status ](https://travis-ci.org/Luzifer/password.svg )](https://travis-ci.org/Luzifer/password)
2019-01-01 14:07:57 +00:00
```console
$ go test -bench .
goos: linux
goarch: amd64
pkg: github.com/Luzifer/password/lib
BenchmarkGeneratePasswords8Char-8 20000 65469 ns/op
BenchmarkGeneratePasswords8CharSpecial-8 20000 97659 ns/op
BenchmarkGeneratePasswords16Char-8 20000 84215 ns/op
BenchmarkGeneratePasswords16CharSpecial-8 20000 92885 ns/op
BenchmarkGeneratePasswords32Char-8 10000 152436 ns/op
BenchmarkGeneratePasswords32CharSpecial-8 10000 144352 ns/op
BenchmarkGeneratePasswords128Char-8 1000 2199011 ns/op
BenchmarkGeneratePasswords128CharSpecial-8 2000 1089225 ns/op
BenchmarkGeneratePasswords4Words-8 200000 9472 ns/op
BenchmarkGeneratePasswords20Words-8 100000 14098 ns/op
2015-05-02 13:42:41 +00:00
PASS
2019-01-01 14:07:57 +00:00
ok github.com/Luzifer/password/lib 21.624s
2015-05-02 13:42:41 +00:00
```