我正在尝试使用 sha256sum 哈希命令来哈希电子邮件地址。
$ echo -n example@gmail.com | sha256sum | awk '{print $1}'
264e53d93759bde067fd01ef2698f98d1253c730d12f021116f02eebcfa9ace6
现在我想在一个只有 email_address 的输入文件上应用相同的方法,但下面显示了一个不同的散列,看起来 CAT 是这里的罪魁祸首,让我知道如何解决这个问题。
$ echo -n | cat test.txt | sha256sum | awk '{print $1}'
5c98fab97a397b50d060913638c18f7fd42345248bb973c486b6347232e8013e
理想情况下,我想看看下面的test.txt是否只有一条记录example@gmail.com(它可以有n个电子邮件地址)
example@gmail.com|264e53d93759bde067fd01ef2698f98d1253c730d12f021116f02eebcfa9ace6
最佳答案
有点不清楚,但我认为您的 test.txt
文件看起来像这样:
example@gmail.com rkj@stackoverflow.com sean@stackoverflow.com
And you want to produce the output:
example@gmail.com|264e53d93759bde067fd01ef2698f98d1253c730d12f021116f02eebcfa9ace6 rkj@stackoverflow.com|2a583d8e55db9bac7247cac8dc4b52780010583217844e864e159c458ce0185c sean@stackoverflow.com|797f02327b00f12486f2ed5e85e61680ecb75a0f969b54a627e329506aaf595c
If that is the case, this will do it:
while read email; do SHA=$(echo -n $email | sha256sum | awk '{print $1}'); echo "$email|$SHA"; done < test.txt
在您的初始命令中,您使用的是 echo -n
打印参数时没有尾随换行符。所以你得到的只是电子邮件地址本身的哈希值。一旦你开始使用一个文件,每一行都会有一个换行符,所以对于每一行你都必须去掉换行符并获取哈希值。这实际上就是我建议的解决方案所做的。
关于linux - 电子邮件地址的 sha256sum 散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33291182/