비밀번호 생성기

w00j00ng351·2023년 2월 17일

Go

목록 보기
3/6
  1. 내용
package main

import (
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	const PASSWORD_LIMIT int = 500
	rand.Seed(time.Now().UnixNano())
	if len(os.Args) < 2 {
		fmt.Println(getRandomString(64))
		return
	}
	v, err := strconv.Atoi(os.Args[1])
	if err != nil {
		fmt.Printf("ERROR: invalid argument \"%s\"\n", os.Args[1])
		os.Exit(1)
	}
	if v > PASSWORD_LIMIT {
		fmt.Printf("ERROR: length must be less than %d\n", PASSWORD_LIMIT)
		os.Exit(1)
	}
	fmt.Println(getRandomString(v))
}

func getRandomString(length int) string {
	letters := "01234567890abcdefghijklmnopqrstuvwxyz"
	generator := &strings.Builder{}
	for i := 0; i < length; i++ {
		generator.WriteByte(letters[rand.Intn(len(letters))])
	}
	return generator.String()
}
  1. 출력 결과

(1) 인자가 없는 경우

$ go run .
3rtrwt1oexfkelz0a348553k35fdbfdbp188lyzu1e7tmeygvkcetp41j4g6zxuo
$ go run .
4fnfr3p7bvgcmm850gmkq4qsckem2bf4d7oxg075otek4ccft24vgw5ghqy0rvhm
$ go run .
8xy9n7jatn4slr6m80n2c7cbetup063g0og6wk0plnxc6e0ehv91idh5ntk276wp
$ go run .
401bzq7zierfztpe23ho1yf7ng9s89es5wd247mirxrxyix4req8lxg7a0tzawf4

(2) 인자가 주어진 경우

$ go run . 0

$ go run . 1
b
$ go run . 2
44
$ go run . 3
41e
$ go run . 4
at93

(3) 잘못된 인자가 주어진 경우

$ go run . a
ERROR: invalid argument "a"
exit status 1

(4) 인자 값이 너무 큰 경우

$ go run . 90000000
ERROR: length must be less than 500
exit status 1
profile
시간이 만든 코드

1개의 댓글

comment-user-thumbnail
2023년 2월 20일
openssl rand -hex 32

로 임의 비밀번호 생성 가능

답글 달기