Hash 理解命令行OpenSSL DGST Sha256命令
我在终端中使用命令Hash 理解命令行OpenSSL DGST Sha256命令,hash,command-line,openssl,sha,Hash,Command Line,Openssl,Sha,我在终端中使用命令openssl dgst-sha256-binary u your_file u path | openssl enc-base64获取jar文件的输出,该文件与AWS Lambda用于散列的内容相匹配 我想用Java编程,但我很难准确地理解这一行的内容,这样我就可以完成代码中的每个步骤。显然,在SHA256中有一种模式,而不仅仅是散列,因为当我这样做时,输出不匹配 有人能帮我简单地解释一下line正在完成的步骤吗?您需要将命令分解以了解发生了什么 命令的第一部分: open
openssl dgst-sha256-binary u your_file u path | openssl enc-base64
获取jar文件的输出,该文件与AWS Lambda用于散列的内容相匹配
我想用Java编程,但我很难准确地理解这一行的内容,这样我就可以完成代码中的每个步骤。显然,在SHA256中有一种模式,而不仅仅是散列,因为当我这样做时,输出不匹配
有人能帮我简单地解释一下line正在完成的步骤吗?您需要将命令分解以了解发生了什么
为文件提供sha256二进制校验和openssldgst-sha256-binary
将SHA256二进制校验和编码为base64openssl enc-base64
#十六进制
$openssl dgst-sha256 data.csv
SHA256(data.csv)=114811b0b8998cb9853a5379598021410feddf69bb2ee7b7145d052a7e9b5d45
#二进制(注意-Binary标志的用法)
$openssl dgst-sha256-binary data.csv
H:茜!Ai.]*~]E
如果将上面的十六进制校验和与二进制校验和进行Base64编码,您还将得到两个完全不同的结果,如下所示
#十六进制
$printf 114811b0b8998cb9853a5379598021410feddf69bb2ee7b7145d052a7e9b5d45 | openssl enc-base64
MTE0ODExYjBiODk5OGNiOTg1M2E1Mzc5NTk4MDIxNDEwZmVkZGY2OWJiMmVlN2I3
MTQ1ZDA1ME3ZTLINWQ0NQ==
#二进制的
$printf'H:SyY!Ai.]*~]E'| openssl加密-base64
SDpTeVkhQWkuXSp+XUU=
对于那些需要TLDR的人要获得与此
cat FILENAME.js | openssl dgst-sha256-binary | openssl base64-A
命令相同的结果,您应进行以下转换:
1) your content -> sha256 (you'll get the hexadecimal number, not a text)
2) hexadecimal -> binary
3) binary -> base64
如果您知道二进制格式的定义/规范(或者至少是描述性自述文件),最好添加一个链接。我现在需要自己找到它,所以我会开始查找,但我怀疑我可能会再次浏览openssl源代码……根据我自己的评论,到目前为止,SHA摘要似乎是网络顺序/bigendian X位数字(例如256位、512位),以及用于文本输出的这些数字的十六进制表示。如果错误,我们将在稍后再次评论。