mirror of
https://github.com/Luzifer/password.git
synced 2024-12-29 09:11:19 +00:00
Fast and secure password generator and library
Knut Ahlers
aad5aeaf79
Yarn does not support automatic fix of vulnerabilities (yarnpkg/yarn#7075) so use NPM which does Signed-off-by: Knut Ahlers <knut@ahlers.me> |
||
---|---|---|
cmd/password | ||
frontend | ||
hasher | ||
js | ||
lib | ||
.gitignore | ||
.gitmodules | ||
.repo-runner.yaml | ||
.travis.yml | ||
Dockerfile | ||
generateXKCDWordList.sh | ||
go.mod | ||
History.md | ||
LICENSE | ||
Makefile | ||
README.md |
Luzifer / password
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
Usage
Via Web
My service Secure Password is powered by this app and will provide you with secure passwords.
Via CLI
-
Download the compiled binary from Github releases
-
Generate your password:
$ ./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 Vzupi4IaPbXmSQEX9A4e $ ./password get -l 32 -s }d.sks(4J$2G]x52=k)WAN{M68LxEg}% $ ./password get -l 4 -x 20190101.SeashellSupporterTumbleweedGeneral
Via API
/v1/getPassword
- Retrieve a password from the APIdate=true
- Set tofalse
no to prepend the date to XKCD-style passwordslength=20
- Specify the length of the password to generate (the API only supports values between 4 and 128 - for more characters use the CLI)special=false
- Set totrue
to enable special charactersxkcd=false
- Set totrue
to enable XKCD-style passwords
Self-Hosted
-
Download the compiled binary from Github releases
-
Run the API server:
$ ./password serve -h start an API server to request passwords Usage: password serve [flags] Flags: -h, --help help for serve --port int port to listen on (default 3000)
-
Request your password using
http://localhost:3000/v1/getPassword?length=20&special=true
Hosted
$ curl https://passwd.fyi/v1/getPassword?length=20&special=true
0M4L-1[lT:@2&7,p,o-;
As library in your own code
package main
import pwd "github.com/Luzifer/password/v2/lib"
func getPassword() (string, error) {
return pwd.NewSecurePassword().GeneratePassword(16, false)
}
Benchmark / Test
Tests and benchmark are run by Travis CI at every push to this repository:
$ 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
PASS
ok github.com/Luzifer/password/lib 21.624s