sha256sum散列的电子邮件地址

时间:2015-10-22 21:34:22

标签: linux perl unix encryption hash

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

有点不清楚,但我认为你的test.txt文件看起来像这样:

example@gmail.com
rkj@stackoverflow.com
sean@stackoverflow.com

你想要产生输出:

example@gmail.com|264e53d93759bde067fd01ef2698f98d1253c730d12f021116f02eebcfa9ace6
rkj@stackoverflow.com|2a583d8e55db9bac7247cac8dc4b52780010583217844e864e159c458ce0185c
sean@stackoverflow.com|797f02327b00f12486f2ed5e85e61680ecb75a0f969b54a627e329506aaf595c

如果是这种情况,可以这样做:

while read email; do SHA=$(echo -n $email | sha256sum | awk '{print $1}'); echo "$email|$SHA"; done < test.txt

在初始命令中,您使用的是echo -n,它打印的参数没有尾随换行符。所以你得到的只是电子邮件地址的哈希值。一旦你开始使用一个文件,每一行都会有一个换行符,所以对于每一行你必须剥离换行符并获得哈希值。这实际上是我建议的解决方案。