Popularity
0.8
Growing
Activity
4.1
Declining
7
1
0

Programming language: Go
Tags: Security    
Latest version: v0.1.0

go-generate-password alternatives and similar packages

Based on the "Security" category

Do you think we are missing an alternative of go-generate-password or a related project?

Add another 'Security' Package

README

go-generate-password

GoDoc Build Status Go Report Card Release codecov

Password generator written in Go. Use as a library or as a CLI.

Usage

CLI

go-generate-password can be used on the cli, just install using: go get github.com/m1/go-generate-password/cmd/go-generate-password

To use:

➜  go-generate-password --help
go-generate-password is a password generating engine written in Go.

Usage:
  go-generate-password [flags]

Flags:
      --characters string   Character set for the config
      --exclude-ambiguous   Exclude ambiguous characters (default true)
      --exclude-similar     Exclude similar characters (default true)
  -h, --help                help for go-generate-password
  -l, --length int          Length of the password (default 24)
      --lowercase           Include lowercase letters (default true)
      --numbers             Include numbers (default true)
      --symbols             Include symbols (default true)
  -n, --times int           How many passwords to generate (default 1)
      --uppercase           Include uppercase letters (default true)

For example:

➜  go-generate-password
5PU?rG-w9YkDus4?AbmKd+Z*

More detailed example:

➜  go-generate-password -n 5 --length 16 --symbols=false
X89R4HvATgg7HSKk
YMwMPnXp7cnMTNdZ
RZWKAvyxFxDWRB8u
PvKb6uP4N7vAMVsD
KHttvhevGrTYptM5

Example using custom character set:

➜  go-generate-password -n 5 --characters=abcdefg01       
10cecfcfe0bea1fdcbb1afcf
bfcgbgg0dccafdacdaa1de01
gb0ggcffcefae0bb1ac0bbge
abafbc1bbaff0cfbdgaee11d
1fge0fcbccabda0g0a01ffc0

Library

To use as a library is pretty simple:

config := generator.Config{
        Length:                     16,
        IncludeSymbols:             false,
        IncludeNumbers:             true,
        IncludeLowercaseLetters:    true,
        IncludeUppercaseLetters:    true,
        ExcludeSimilarCharacters:   true,
        ExcludeAmbiguousCharacters: true,
    }
g, _ := generator.New(&config)

pwd, _ := g.Generate() 
// pwd = 8hp43B2R7gaXrZUW

pwds, _ := g.GenerateMany(5)
// pwds = [
//   dnPp2TW2e8wmkAwT,
//   XVYwWn25xuNwhUTy,
//   vQ8aSrustQzxQCkA,
//   AuT4fu5RU9TtxEUR,
//   muDwwBRpKpC5BcHr,
// ]

pwd, _ = g.GenerateWithLength(12)
// pwd = HHhpzRGsmEWt

pwds, _ := g.GenerateManyWithLength(5, 12)
// pwds = [
//   s5TKYPdgRzvZ
//   wZFgzs8PUvRg
//   tU73qZ9sPzEs
//   mMaYU6hkvxPQ
//   KBNZ2D7cVQS2
// ]

The library also comes with some helper constants:

const (
    // LengthWeak weak length password
    LengthWeak = 6

    // LengthOK ok length password
    LengthOK = 12

    // LengthStrong strong length password
    LengthStrong = 24

    // LengthVeryStrong very strong length password
    LengthVeryStrong = 36

    // DefaultLetterSet is the letter set that is defaulted to - just the
    // alphabet
    DefaultLetterSet = "abcdefghijklmnopqrstuvwxyz"

    // DefaultLetterAmbiguousSet are letters which are removed from the
    // chosen character set if removing similar characters
    DefaultLetterAmbiguousSet = "ijlo"

    // DefaultNumberSet the default symbol set if character set hasn't been
    // selected
    DefaultNumberSet = "0123456789"

    // DefaultNumberAmbiguousSet are the numbers which are removed from the
    // chosen character set if removing similar characters
    DefaultNumberAmbiguousSet = "01"

    // DefaultSymbolSet the default symbol set if character set hasn't been
    // selected
    DefaultSymbolSet = "!$%^&*()_+{}:@[];'#<>?,./|\\-=?"

    // DefaultSymbolAmbiguousSet are the symbols which are removed from the
    // chosen character set if removing ambiguous characters
    DefaultSymbolAmbiguousSet = "<>[](){}:;'/|\\,"
)