Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Rubyで簡易なパスワードを生成してくれるコード

More than 1 year has passed since last update.

Rubyでは、パスワードを生成してくれるコードを簡単に作成することができます。
まずは。パスワードを生成してくれるコードを紹介してから、次にひとつひとつの関数などの機能についてを説明していきます。
生成するパスワードの文字数は、「8」文字のアルファベット縛りとしていきます。(文字数については変更可能です)

パスワードを生成するコード

早速ですが、下記のコードをターミナルなどに打つことでパスワードを生成してくれます。

('a'..'z').to_a.shuffle[0..7].join

すると、ランダムなアルファベット8文字を生成してくれます。
この生成された文字をパスワードとして使おうという感じになります。

それぞれ関数などの説明

ひとつひとつの関数などには動きがあります。
なので、コードの左側からひとつひとつの機能について説明していきます。

('a'..'z').to_a

to_aで、('a'..'z')で指定したアルファベットを順番に配列に格納しています。
冒頭に('a'..'z')と記述することで、アルファベットの「a」から「z」までを指定しています。

>> ('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

.shuffle

.shuffleにて、文字通り配列内の文字列をシャッフルしています。
ここで、先ほど配列に格納したアルファベットの「a」から「z」をシャッフルします。

>> ('a'..'z').to_a.shuffle
=> ["y", "j", "d", "e", "x", "o", "i", "p", "k", "b", "w", "t", "c", "g", "m", "n", "z", "q", "r", "f", "l", "v", "h", "u", "s", "a"]

[0..7]

配列の先頭から、「8」つの要素(8文字)を取り出します。
9つ目以降の要素については消去されます。
ここの7という数字を大きくしたり小さくしたりすることで、パスワードの文字数を変更することができます。

>> ('a'..'z').to_a.shuffle[0..7]
=> ["l", "w", "r", "j", "a", "b", "p", "i"]

.shuffleを実行しているので、配列内の文字は変わっています。

.join

.joinで、バラバラだった要素を結合させます。
先ほど取り出した「8」つの要素を結合させて、1つの文字列としてまとめてパスワードの完成となります。

>> ('a'..'z').to_a.shuffle[0..7].join
=> "rcvykpjg"

※これもまた、.shuffleを実行しているので(ry

結果

そうすることで、下記のように8文字のパスワードが生成されます。

rcvykpjg
KenAra
love Nippon.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away