LoginSignup
0
0

More than 1 year has passed since last update.

[Go Snippet] パスワード生成用のランダムな文字列を返す関数

Posted at

きっかけ

海外のサービスではほぼ見ないが、日本のサービスではパスワードに文字数制限があったり、特殊文字が使えなかったりするので、ちゃちゃっと生成できるようにしたいと考えていました。

そんなときちょうど Go 言語のスクレイピングライブラリ Colly でサンプルのコードがあったので、自分用に作り変えてみることに。

Go で書いてみる

やりたいことの条件

  • ランダムな文字列を返す
  • 文字数を指定できる
  • 文字のみ、文字+数字のみ、文字+数字+特殊文字 を簡単に選べるようにする

ということで、書いてみる

import "math/rand"

const letters = "abcdefghijklmnopqrstuvwxyz"
const LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const numbers = "123456789"
const specialChar = "~!@#$%^&*()_-+={}[]:;,.<>?/'"

var letterBytes string

func RandomString(length int, strength int) string {
	b := make([]byte, length)

	switch strength {
	case 3:
		letterBytes = letters + LETTERS + numbers + specialChar

	case 2:
		letterBytes = letters + LETTERS + numbers

	default:
		letterBytes = letters + LETTERS
	}

	for i := range b {
		b[i] = letterBytes[rand.Intn(len(letterBytes))]
	}

	return string(b)
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0