takashi kono's blog

コーヒーとキーボードと共に何かを記録していくブログ

openssl でランダムな文字列を作る備忘録

参考

[小ネタ] 作業用のパスワードっぽい文字列を CLI で手軽に作成する (openssl編) | DevelopersIO

というか、まんまこれ

たどり着いた先

文字に偏りが出るが。。。

openssl rand -base64 128 | fold -w 64 | head -1 | tr '1liI0OoQq/+=' '!2

64 文字より長くしたいなら

openssl rand -base64 300 | tr '\n' 'nr' | fold -w 256 | head -1 | tr '1liI0OoQq/+=' '!23456789'

こんな感じだろうか

解説

参考に全部丁寧に書いてある
が、備忘録てきに書いておく

# 12文字指定でつくる
$ openssl rand -base64 12
m1+aDlQD1Vsn2Tm9
# が、 base64 であるため文字数が 4/3 倍になる
# 17 になっているのはおそらく \n が入っている
$ openssl rand -base64 12 | wc -c
17

base64 なので、64文字で自動的に改行が入るので、それ以上の文字列にしたい場合は置換する

tr '\n' 'nr'

任意の文字数で改行する

fold -w 文字数

1行だけあればいいので最初の1行目をとる

head -1

使いたくない文字を問題ない文字に置換する
曖昧な文字とか変えたら良いんじゃないかな

tr '1liI0OoQq/+=' '!23456789'

という感じでした