diff --git a/main.go b/main.go index 54fe4d7dfca04aff986985941fef4d66b83e3150..2aebca612961516d8f4dc8ba8f1e27aa662767ab 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,7 @@ var ( consonants = "bcdfghjklmnpqrstvwxyz" vowels = "aeiou" numbers = "0123456789" + separators = "-. " newBase60Chars = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ_abcdefghijkmnopqrstuvwxyz" flagNB60 = flag.BoolP("nb60", "n", false, "Generate a 20-character password using the NewBase60 charset") flagFriendly = flag.BoolP("friendly", "f", true, "Generate a 20-character password using an Apple-style friendly algorithm") @@ -31,6 +32,7 @@ func main() { os.Exit(0) } fmt.Println(generateFriendly()) + os.Exit(0) } func generateNB60() string { @@ -50,12 +52,12 @@ func generateFriendly() string { sets[i] = genFriendlySet() } - result := strings.Join(sets, "-") + result := strings.Join(sets, string(separators[randomInt(len(separators))])) letterPos := randomInt(len(result)) // Generate a different position until a non-separator is found - for result[letterPos] == '-' { + for strings.Contains(separators, string(result[letterPos])) { letterPos = randomInt(len(result)) } existingLetter := result[letterPos] @@ -70,7 +72,7 @@ func generateFriendly() string { // Generate a different position until a non-separator and non-uppercase-letter // is found numberPos := randomInt(len(result)) - for result[numberPos] == '-' || result[numberPos] == result[letterPos] { + for strings.Contains(separators, string(result[numberPos])) || numberPos == letterPos { numberPos = randomInt(len(result)) } result = result[:numberPos] + string(numbers[randomInt(len(numbers))]) + result[numberPos+1:]