ターミナルやプロンプトで、ワンラインでパスワードを適当に作りたい時のこじれ過ぎたTips


2022年になろうとしているのに、
「登録するWebサービスやソフトウェア・あるいはミドルウェアの都合で、パイプラインで標準出力に加工コンボをキメてパスワードを作る」
機会は地味に多い。例えば;

$ # 例1:時刻を元ネタに、sha256sumを生成した後にbase64でさらにゴマかし、そこから先頭14文字を抽出して小文字化を行って改行記号を加える。
$ date +%s | sha256sum | base64 | head -c 14 | tr '[:upper:]' '[:lower:]' | tr -d '\n' # 改行を最後に加えないと、プロンプトが大変な事になるんよ。
$
$ # 例2:opensslのrandサブコマンドを元ネタに18文字のbase64文字列を作成して小文字変換して改行を加える。
$ openssl rand -base64 18 | tr '[:upper:]' '[:lower:]' | cat # 同じく改行を加える為にcatで代用してみたり。

という具合に。

なお『Friendly Interactive Shell』だと;

$ date +%s | sha256sum | base64 | head -c 8 | string lower
$ openssl rand -base64 32 | head -c 10 | string upper

という横着ができたりする:
* string-lowerコマンド
* string-upperコマンド

Windowsの皆さんも安心して頂きたい。PowerShellでもキメれる:
PowerShellでパスワード生成

「Webブラウザ内蔵のパスワード生成と保存機能」
だと要求されているパスワードの条件が成り立たせれない時の隠し玉として備えておいて損は無いかもしれない。

ネタ元

おまけ

コピペで横着したいが スクリプトキディから脱却したい という方は、tr コマンドを更に組み合わせて『Leet』記法を混入させたら面白いかもしれん。例:

$ date +%s | sha256sum | base64 | head -c 14 | tr 'A' '4' | tr 'B' '8' | tr '[:upper:]' '[:lower:]' | 

本音を言うなら、パスワードには一片の詩でも綴って置きたいものだが。そんな心情を求められる機会もそうそう無い。