ソルトつきパスワードの生成と検証

ソルトつきパスワードを生成する必要があったので、それのメモ。

cat << '_EOF_' > gen-pass.sh
#!/bin/bash

export SALT=$(openssl rand -hex 4)
echo -n "PASSWD: "
read -s PASSWD
echo ""
export HASHED=$(openssl passwd -6 -salt=$SALT $PASSWD)
echo ${HASHED}

unset PASSWD
_EOF_

chmod 744 gen-pass.sh

実行すると下記のようになる。source を使用して環境変数として HASHED に代入する。

% source ./gen-pass.sh
PASSWD:
$6$3b3010b8$QqVR7VOCyIpR0KdT8Yl18LMDEA0XrcTDVewXxXFkdQiekO.kgCIKW2i04/pIOQONs9ZE0SXEv.ihto/pjvYuY.

% echo $HASHED
$6$3b3010b8$QqVR7VOCyIpR0KdT8Yl18LMDEA0XrcTDVewXxXFkdQiekO.kgCIKW2i04/pIOQONs9ZE0SXEv.ihto/pjvYuY.

検証は下記のように行う。

cat << '_EOF_' > verify-pass.sh
#!/bin/bash

HASHED=${HASHED:-$1}

echo -n "PASSWD to verify: "
read -s PASSWD
echo ""

SALT=$(echo "$HASHED" | cut -d'$' -f3)
VERIFY=$(openssl passwd -6 -salt=$SALT "$PASSWD")

if [[ "$HASHED" = "$VERIFY" ]]; then
	echo "true"
else
	echo "false"
fi

unset PASSWD VERIFY
_EOF_

chmod 744 verify-pass.sh

実行結果は下記のようになる。

% ./verify-pass.sh ${HASHED}
PASSWD to verify:
true

変更履歴

2025-11-03: 初稿