先日、証明書発行の際に乱数の生成が必要となったため、MacにOpenSSLコマンドインストールして乱数を生成してみました。
Windows10で乱数を生成したい方は以下の記事がおすすめです。
Windows10でランダムな文字列を生成する方法【PowerShell】
キーの生成をしたいときなど、ランダムな文字列が必要になることってありますよね。Macであればopensslコマンドなどを使って簡単に生成することができます。 しかし、Wi…
今回の環境は以下の通りです。
- macOS Monterey(12.6.1)
- OpenSSL(3.0.7)
目次
OpenSSLをインストールする
MacはHigh Sierraのバージョンから、デフォルトのOpenSSLがLibreSSLに変更されています。
$ openssl version
LibreSSL 2.8.3
LibreSSLのままでも良いのですが、今回はOpenSSLを使いたいので、まずはHomebrewでインストールしましょう。
$ brew install openssl
Homebrewをまだインストールしていない方は、公式サイトを確認してインストールしておいてください。
インストールしたらパスを通して、設定を再読み込みしましょう。
$ echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
$ source .zshrc
bash
の方は以下になるかと思います。
$ echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
バージョンを確認して準備完了です。
$ openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
乱数の生成
OpenSSLコマンドの基本的な型は以下の通りです。
$ openssl rand {進数} {任意のbyte数}
{進数} | 説明 | 入力例(10byteで生成する場合) |
---|---|---|
-hex | 16進数 | openssl rand -hex 10 |
-base64 | 64進数 | openssl rand -base64 10 |
上記の入力例のように入力すると、標準出力に乱数が出力されます。
ファイルに出力する
今度は、生成した乱数をファイルに出力してみましょう。
$ openssl rand {進数} {任意のbyte数} > {ファイル名}
{進数}
と{任意のbyte数}
については前述の表と同様です。{ファイル名}
には、sample.txt
などのように任意のファイル名を入力してください。
以下のように実行すると、指定したファイルに乱数が出力されていると思います。
$ openssl rand -base64 10 > sample.txt
(おまけ)任意の文字数で区切ってみる
おまけとして、今度は出力される乱数を任意の文字数で区切ってみましょう。
生成された乱数を任意の文字数で改行してファイルに出力する基本形は以下となります。
$ openssl rand {進数} {任意のbyte数} | fold -w {何文字ごとに改行するか}
例えば、以下のように入力すると、生成された15byteの乱数が10文字ごとに改行されて出力されます。
$ openssl rand -base64 15 | fold -w 10 > sample.txt
おわりに
今回は、乱数を生成するためにopensslコマンドを利用してみました。
お手軽に乱数を生成できるので便利ですね!
OpenSSLに限らず、こういったコマンド関連は覚えておくといろんな場面で役に立ちます。
- ちょっとした処理を実行する(今回の例)
- サーバーサイドでバッチ処理を書く
- シェルスクリプトを書いてローカルの処理を自動化する
- etc…
コマンドを覚えた分だけ世界が広がるので、ぜひ実際に手を動かしておぼえていきましょう!