gpt4 book ai didi

linux - openssl 问题和获取正确值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:09 25 4
gpt4 key购买 nike

我似乎在对 openssl 命令进行哈希处理时获取正确的值时遇到了问题。这是我的代码。

IFS=","

while read -ra line;
do
if [ "${line[1]}" != "" ]; then
echo -n "${line[*]},"; echo -n "${line[1]}" | openssl dgst -sha1 | sed 's/^.* //' ;
else
if [ "${line[1]}" == "" ]; then
echo "${line[*]}, Hash Value: None";
fi
fi
done

这里是文本文件中第二列的输入,代码中是“${line[1]}”。

"1376051635"

这是我运行命令的方式:

./orange.sh < "C:\Documents and Settings\562359\Desktop\Analytics\persons\persons.txt"

屏幕输出是这样的:

"524786870","1376051635",2483a818fac3e5214697f1ed76d92e2f54d4a277

第三列是第二列的散列值,但不正确。当我运行这个命令时

echo -n "1376051635" | openssl dgst -sha1

我的输出是:

(stdin)= f8d822c6b46a2eb4e35bb4d76b8ce2e336d541e8

这是正确的哈希值。为什么这不起作用?看起来代码是正确的,但输出的散列值与应有的完全不同。对此问题的任何帮助将不胜感激。

最佳答案

您包含双引号,这就是您获得不同值的原因。

你可以试试这个脚本:

#!/bin/bash

IFS=","

while read -ra line; do
if [[ -n ${line[1]} ]]; then
second_value=${line[1]#\"} second_value=${second_value%\"}
hash_value=$(echo -n "$second_value" | openssl dgst -sha1 | sed 's/^.* //')
echo "${line[*]},${hash_value}" ## Or should ${hashvalue} be surrounded by quotes?: \"${hash_value}\"
else
echo "${line[*]}, Hash Value: None"
fi
done

注意:如果您打算替换以前的哈希值,请改用此行:

        echo "${line[*]:0:2},${hash_value}"

关于linux - openssl 问题和获取正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com