linux - 电子邮件地址的 sha256sum 散列

标签 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

最佳答案

有点不清楚,但我认为您的 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/

相关文章:

python - 如何将正则表达式从 perl 转换为 python

regex - 为什么添加 Perl/x 开关会阻止我的正则表达式匹配?

c - 免费提供错误

linux - 有没有一种检测陈旧的 NFS 挂载的好方法

php - 在 Windows Server 系统上托管 php 应用程序。有什么问题/建议吗?

linux - 使用 iptables 将端口 80 路由到端口 5000

Perl GetOptions() 区分大小写

bash - 如何监控 ssh 文件传输和输出到日志文件的进度

linux - 如何让我的一个类轮脚本根据条件打印颜色?

r - 从触发者启动的作业中获取 SLURM 作业 ID