• 2007-10-04 01:00
    追記しました.

メモ.

1
2
#!/bin/sh
echo $1 | perl -e 'use Digest::SHA1 qw( sha1_hex ); print sha1_hex( <> ) . "n";'

とか

1
2
#!/bin/sh
echo $1 | openssl dgst -sha1

のようにシェルスクリプトを書いてパスを通しておけば,コマンドラインや PostgreSQL クライアントでそれぞれ

% sha1 hogehoge
8df7f638da50ddfa8f6a4162ddfc738b65e8b1cf
%
=> \! sha1 hogehoge
8df7f638da50ddfa8f6a4162ddfc738b65e8b1cf
=>

のようにできるので,個人的に便利になりましたとさ.

あとは PostgreSQL でこれを使って CREATE FUNCTION できると幸せなんだけど...もうちょっと勉強します.

2007.10. 4 追記

e-10.in さんのご指摘より,sha1sum を使えばおk,なのが判ったのでここに書いておきます.もうコマンド知らなさすぎです > 自分.

ちなみに sha1sum コマンドの出力は

% echo -n hogehoge | sha1sum
3b2c6c10d0e78072d14e02cc4c587814d0f10f3a  -
%

のように,後ろにヘンなもの (入力ファイル名,標準入力の場合は -) がついてくるので,cut コマンドでこれを取り除きました (これも今調べました).

で,以下が修正版です.

#!/bin/sh
echo -n $1 | sha1sum | cut -b -40

はい,とっても簡単になりました.

こちらもあわせてどうぞ

2 Responses to “コマンドラインで sha1 を”

  1. e-10.in より:

    どうも,お久しぶりです

    # echo hogehoge | sha1sum

    でおOK

    あと echo コマンドは引数の最後に改行文字挟むんで ‘echo -n’ のほうがよさげです

  2. issm より:

    > e-10.in さん
    お久しぶり~.

    ご指摘サンクスです.
    これみるとエライまわりくどいことやってたのがわかりますね...orz

    > echo コマンドは引数の最後に改行文字挟むんで
    ですよね.別プログラムの出力と違うので,調べたらそのようでした.

    ちなみに,sha1sum の出力にはファイル名 (標準入力の場合は ‘-’) がいっしょについてくるみたいなので,そのありを踏まえた修正版を追記しておきました.

Leave a Reply

直近のつぶやきを読み込みちゅう...