我正在嘗試使用此腳本為目錄中的檔案創建哈希:
for file in *.zip; do openssl dgst -sha256 -binary ${file%.*}.zip $file | base64 >> ${file%.*}.zip.base64sha256; done
它像這樣創建哈希:
b5iQL1fo5r 6osykGr0mcEZ14Xdbn8y0SrFGIuzMfeRvmJAvV jmv7qh7OUavSZwRnXhd1ufzLRKsUYi7Mx95A==
但是對于 terraform 和 AWS Lambdas,我需要一個短散列值。我可以通過使用這樣的終端和命令來獲得:
openssl dgst -sha256 -binary archive.zip | base64 >> hash.base64sha256
輸出是b5iQL1fo5r 6osykGr0mcEZ14Xdbn8y0SrFGIuzMfeQ=
所以問題是:我如何檢索短版本的哈希?terraform 和 AWS 需要它(當哈希值很長時 - lambda 每次都會重新部署)
uj5u.com熱心網友回復:
如果您解碼“長”base64,您會看到它是重復的相同位元組序列。那是因為這里
openssl dgst -sha256 -binary ${file%.*}.zip $file
您指定了兩次檔案,一次洗掉擴展名,然后將其重新添加為 .zip in ${file%.*}.zip,另一個則添加為$file. 這導致輸出兩個輸入(相同)的串聯散列。要解決此問題,只需指定一次:
openssl dgst -sha256 -binary "$file"
(用引號來避免 shell 擴展中的空格問題)
uj5u.com熱心網友回復:
代替
for file in *.zip; do openssl dgst -sha256 -binary ${file%.*}.zip $file | base64 >> ${file%.*}.zip.base64sha256; done
嘗試
for file in *.zip; do openssl dgst -sha256 -binary ${file%.*}.zip | base64 >> ${file%.*}.zip.base64sha256; done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/458967.html
上一篇:使用命名范圍回圈作業表
下一篇:尋找合適的埠范圍
