BashスクリプトでHMAC-SHA512ダイジェストを計算したいです。これまで、私はさまざまなウェブサイトでこのコンテンツだけを何度も繰り返すことを発見しました。
echo -n message | openssl dgst -sha256 -hmac secret -binary >message.mac
明らかに、秘密の文字列をプログラムに渡す正しい方法ではないという事実には誰も気付いていません。秘密は、システムで実行されている他のすべてのプロセスのプロセスのリストに表示されるためです。秘密を伝えるためのより良いインターフェースを使用してシェルからHMACを簡単に生成するための別の方法(おそらく他のツールを使用)はありますか?
修正する
~/bin/hmac
現在、次のツール()を使用しています。環境変数からキーを取得しますMACKEY
。
#!/usr/bin/env python3
import hmac, sys, os
key = os.environ['MACKEY'].encode('utf-8')
algo = os.getenv('MACALGO', 'sha512')
digest = hmac.new(key, digestmod = algo)
while True:
buf = sys.stdin.buffer.read(512)
if not buf:
break
digest.update(buf)
print(digest.hexdigest())
使用法:
echo -n message | MACKEY=foobar hmac
ベストアンサー1
リダイレクトはパラメータリストの一部ではありません。
これは垣間見ることから安全であると考えられる。
cmd </file/key
cmd <<<"key"
名前のないパイプはスクリプト内でも使用できます。
echo "secret" | cmd
したがって、このスクリプトは安全と見なされます。
#!/bin/bash
read secretkey </dev/stdin
var="<?= hash_hmac(\"sha512\", \"$1\", \"$secretkey\"); ?>"
php7.1 <<<"$var"
キーをファイルに保存できる場合は、</dev/stdin
。</dir/keyfile
バージョンはstdin
次のように使用してください。
./script "Message" <<<"secretkey"