我正在尝试使用 md5 算法计算文件的摘要。我被要求将输出格式化为二进制而不是十六进制。这是我在终端中的命令(我使用 mac):
openssl dgst -md5 -binary ~/Documents/msg_Joudi.txt > ~/Documents/hash.txt
生成了hash.txt文件,但其内容不是二进制格式,我不知道错误在哪里。
创建文件的 MD5 哈希值:msgFile.txt
>
转换为 Binary 并保存:
cat msgFile.txt | openssl dgst -md5 -binary > hash.bin.txt
以 Base64 格式保存二进制文件:
cat msgFile.txt | openssl dgst -md5 -binary | base64 > hash.bin.b64.txt
以十六进制表示形式保存二进制:
cat msgFile.txt | openssl dgst -md5 -binary | xxd -ps -c16 > hash.bin.hex.txt
使用Python将二进制转换为整数:
python -c "print(int('$(cat msgFile.txt | openssl dgst -md5 -binary | xxd -ps -c16)', 16))" > hash.bin.int.txt
OP 说他想要二进制,然后说“二进制应该是 0 和 1,对吗?”。 虽然,可能不太可能,但如果他真的想要二进制数输出,请这样做:
$ echo -e "xx\nyy" >in.txt
$ perl -ln0777e 'use Digest::MD5 "md5"; print "0b".unpack("B*",md5($_))' <in.txt
0b001111000101011000010000100101100011010101000101111000101000000011110110011010110011010000!
以上含义:
如果他确实想要二进制数据,修改上面:
$ perl -ln0777e 'use Digest::MD5 "md5"; print md5 $_' <in.txt >binout.txt