Skip to content

A Golang library for generating high-entropy random passwords similar to 1Password or LastPass.

License

Notifications You must be signed in to change notification settings

tilakraj9560/go-password

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golang Password Generator

GoDoc GitHub Actions

This library implements generation of random passwords with provided requirements as described by AgileBits 1Password in pure Golang. The algorithm is commonly used when generating website passwords.

The library uses crypto/rand for added randomness.

Sample example passwords this library may generate:

0N[k9PhDqmmfaO`p_XHjVv`HTq|zsH4XiH8umjg9JAGJ#\Qm6lZ,28XF4{X?3sHj
7@90|0H7!4p\,c<!32:)0.9N
UlYuRtgqyWEivlXnLeBpZvIQ
Q795Im1VR5h363s48oZGaLDa
wpvbxlsc

Installation

$ go get -u github.com/sethvargo/go-password/password

Usage

package main

import (
  "log"

  "github.com/sethvargo/go-password/password"
)

func main() {
  // Generate a password that is 64 characters long with 10 digits, 10 symbols,
  // allowing upper and lower case letters, disallowing repeat characters.
  res, err := password.Generate(64, 10, 10, false, false)
  if err != nil {
    log.Fatal(err)
  }
  log.Printf(res)
}

See the GoDoc for more information.

Testing

For testing purposes, instead of accepted a *password.Generator struct, accept a password.PasswordGenerator interface:

// func MyFunc(p *password.Generator)
func MyFunc(p password.PasswordGenerator) {
  // ...
}

Then, in tests, use a mocked password generator with stubbed data:

func TestMyFunc(t *testing.T) {
  gen := password.NewMockGenerator("canned-response", false)
  MyFunc(gen)
}

In this example, the mock generator will always return the value "canned-response", regardless of the provided parameters.

License

This code is licensed under the MIT license.

About

A Golang library for generating high-entropy random passwords similar to 1Password or LastPass.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 91.0%
  • Makefile 9.0%