ベース64にmd5ハッシュをエンコードする必要があります。md5sumコマンドの出力をbase64コマンドに与えると、それはテキストとして扱われ、16進データではありません。それを管理する方法は? Base64コマンドには、入力を16進数として設定するオプションはありません。BASHでmd5 sumをbase64にエンコードする方法
ありがとうございました。
ベース64にmd5ハッシュをエンコードする必要があります。md5sumコマンドの出力をbase64コマンドに与えると、それはテキストとして扱われ、16進データではありません。それを管理する方法は? Base64コマンドには、入力を16進数として設定するオプションはありません。BASHでmd5 sumをbase64にエンコードする方法
ありがとうございました。
md5sum
の代わりにopenssl dgst -md5 -binary
を使用してください。必要に応じて、base64エンコードにも使用でき、すべての用途に1つのプログラムしか使用できません。 busyboxので
echo -n foo | openssl dgst -md5 -binary | openssl enc -base64
(openssl md5
代わりのopenssl dgst -md5
があまりにも動作しますが、私はそれが明示的である方が良いと思う)
unhex()
{
for ((b=0; b<${#1}; b+=2))
do
printf "\\x${1:$b:2}";
done
}
md5sum2bytes()
{
while read -r md5sum file; do
unhex $md5sum;
done
}
md5sum inputfile | md5sum2bytes | base64
あなたは、ループ構文のために使用することはできない場合があります。 unhex下に()が代わりにwhileループで実装されています
unhex()
{
b=0;
while [ $b -lt ${#1} ];
do
printf "\\x${1:$b:2}";
b=$((b += 2));
done
}
md5sum2bytes()
{
while read -r md5sum file; do
unhex $md5sum;
done
}
md5sum inputfile | md5sum2bytes | base64
あなたはまた、BASE64に渡す前に、進をデコードする(VIMが付属しています)XXDを使用することができます。
(echo 0:; echo -n foo | md5sum) | xxd -rp -l 16 | base64
感謝をずっと。それはうまく動作します。 –