セキュアなメールを送るときに未だに利用するpassword zip。1通目にzipパスワードを送信し、2通目にpasswordを送付するというのは割とビジネスシーンの慣習だと思います。(色々と賛否がある様子ですが。)しかしながら、パスワードを毎回検討するのは面倒なものです。

MacではRandom PASSWORD ダッシュボードウィジェットなどを活用してパスワードを生成したりしておりました。とはいえ、作成したパスワードを紛失したりと、何かと不便なことも多いです。(特にどうでもいいファイル)

そこでhashをパスワードに利用すると便利です。bashなどでは組み込みで1発でhashを作成できるコマンドはありませんので、sha1コマンドを作成します。opensslが必要です。

コマンド:sha1

#!/bin/sh
# sha1 command
# - opensslのバージョンにより、不要な文字列が出力されてしまうので、sedコマンドでトリミング。
#
echo -n "${1}" | openssl sha1 | sed 's/^.* //'

上記をパスの通った所に配置してみます。その上で引数に適当な文字列を与えてあげれば完成です。

sha1 foo
# d277eadf6e478d63ace230aa92f11d5e2cbe2d62

すると見事にパスワードに利用できるような暗号化文字列が作成されます。

この手法の便利な所は簡単にセキュリティ強度が高まることです。簡単なパスワードであれば、一段階入れるだけで強度が飛躍的に向上しますし、従来パスワードとして渡すべき乱数であっても同様です。「送信先メールアドレス + 作成日付」などと自分の心の中でルールを決めておけば、簡単にパスワードを復元することも可能です。今回はsha1のみを利用しましたが、他のハッシュアルゴリズムを利用すればもっと長くすることも可能です。これだけの長さであれば、zip passwordの総当たり解析もほぼ不可能です。(SHA1のハッシュキーの長さは、160ビット。すなわち1.5極通り)

メールのpasswordに利用しましたが、これは他のユーザアカウント作成にも転用できます。