@@ -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:]