CGI输出Shell-md5sum错误值

问题描述 投票:0回答:1

我需要将IPv4地址拆分为八位字节,计算每个八位字节的MD5哈希值并打印为CGI输出:

IP1=$(echo ${REMOTE_ADDR} | tr "." " " | awk '{print $1'} | md5sum | cut -c1-32)
printf $IP1

在此示例中,REMOTE_ADDR = 192.168.20.100但是192的MD5给了我错误的MD5 IP1=6be7de648baa9067fa3087928d5ab0b4,而应该是58a2fc6ed39fd083f55d4182bf88826d

如果我这样做:

cat /tmp/test.txt | md5sum | cut -c1-32

其中test.txt包含192,我得到了正确的MD5哈希,即58a2fc6ed39fd083f55d4182bf88826d

我在做什么错?

shell awk cgi md5sum
1个回答
0
投票

您的awkprint正在添加换行符,因此您要计算的是"192\n"的md5,而不是"192"。使用

IP1=$(printf "%s" "${REMOTE_ADDR%.*.*.*}" | md5sum | cut -c1-32)

相反,它使用外壳程序参数扩展删除IP地址的第一个八位字节以外的所有字节,并使用printf写入而不包含换行符。

© www.soinside.com 2019 - 2024. All rights reserved.