bash - 生成的 SHA256 值与预期的 SHA256 值不同
问题描述
将执行以下步骤:
- 对 ASCII 值进行 base64 解码。
- 要“啁啾”附加解码值。
- 在“chirp<decoded_value>”上生成 sha256
#!/bin/sh
a=$(echo MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADAoR0WUZBTAkZv0Syvt+g5wGpb/HYHh22zAxCNP+ryTQ=|base64 -d)
b="chirp$a"
echo $b
echo -n $b | sha256sum
我得到的值是:f62e19108cfb5a91434f1bba9f5384f9039857743aa2c0707efaa092791e4420
但期望值为:6a29cb4....
我错过了什么吗?
解决方案
对于二进制数据,作为您处理的 base64 解码数据,我不会过多依赖echo
,而只是通过管道传输这些内容,如下所示:
<<<'MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADAoR0WUZBTAkZv0Syvt+g5wGpb/HYHh22zAxCNP+ryTQ=' base64 -d | cat <(echo -n chirp) - | sha256sum
这给了我您期望的结果,6a29cb438954e8c78241d786af874b1c7218490d3024345f6e11932377a932b6。
在这里,cat
获取两个文件描述符作为参数,第一个流式传输单词“chirp”,第二个转发前一个命令的标准输出 ( base64 -d
)
推荐阅读
- sequelize.js - Sequelize 按字母顺序读取迁移文件,但我需要不同的排序
- excel - Do While freq.Value <> " " 'if freq in range >< empty --> ERROR BUG
- python-3.x - 如何从胶囊层打印输出向量?
- java - 如何从一个流中过滤不包含在另一个流中的字符串?
- git - 我对很多文件进行了更改,但还没有提交。如何退出所有更改?
- r - 在包含值的间隔表中查找行 - 需要匹配 2 个其他条件
- javascript - 网格中带有按钮的条件列javascript .net核心
- python - 在类对象列表中存储元组值
- php - Laravel-5.6 'LIKE' 在哪里选择
- authentication - 使用 gRPC-web 通过身份验证安全地公开 gRPC 服务