Python 如何将Google云存储base64 md5sum转换为十六进制版本?
Google云存储表示使用base64编码值的对象的数量Python 如何将Google云存储base64 md5sum转换为十六进制版本?,python,google-cloud-storage,Python,Google Cloud Storage,Google云存储表示使用base64编码值的对象的数量 如何将这些值转换为md5sum报告的十六进制版本?下面是一个使用numpy的简单python配方 import numpy as np b=np.frombuffer(base64.urlsafe_b64decode(md5_base64), dtype=np.uint8) print "".join(["%0x"% l for l in b]) 这里md5_base64是Google云存储报告的值。您可以通过运行ocmmand来获得
如何将这些值转换为md5sum报告的十六进制版本?下面是一个使用numpy的简单python配方
import numpy as np
b=np.frombuffer(base64.urlsafe_b64decode(md5_base64), dtype=np.uint8)
print "".join(["%0x"% l for l in b])
这里md5_base64是Google云存储报告的值。您可以通过运行ocmmand来获得该值
gsutil stat gs://PATH/TO/FILE
输出应包括散列(md5)(假设为a)。您可以使用(或):
md5sum
来自地面军事系统的兼容哈希列表
对于任何正在寻找本机命令行/coreutils方法来检查云存储完整性的人,例如,您只是通过浏览器访问存储,或者您试图验证的文件存储在其他地方,您只是想生成一个.md5
哈希列表,以便稍后运行md5sum-c
对于任何带有gsutil ls-L
的GCS bucket目录列表,通过此块管道输出(通过别名或bash脚本)
应在本地使用md5sum-c
生成与验证兼容的输出。基本上,它是一个awk
块,用于查找gs://
行和Hash(md5):
行,交换它们的顺序(以便在文件名之前打印Hash),并使用base64-d
和xxd
将Hash转换为十六进制字符串
例子
我可以将上述awk代码块保存到文件md5convert
,并且:
analogist@project-1111$ ls -L gs://bucket-name/directory | bash md5convert
db15d8329eda69c98e67e339eca1c46c directory/file1.tar.gz
5ddac123209a00347d6ab1faeee71d10 directory/file2.tar.gz
我认为这是一个输入错误;我想你的意思是“导入base64”。所以不让我编辑它,因为它允许超过6个字符。“我更喜欢你的答案,因为它不需要numpy。”杰里米莱维,你说得对。我相应地更新了答案。谢谢你指出这一点。
awk 'BEGIN { \
decodehash = "base64 -d | xxd -p | tr -d \"\\n\""; \
truncname = "sed \"s/gs:\/\/[a-z0-9_.\-]*\///\" | sed \"s/:$//\"" } \
/Hash \(md5\)/ { print $3 | decodehash; close(decodehash); \
printf " %s\n",fname | truncname; close(truncname) } \
/^gs:\/\// { fname = $0 }'
analogist@project-1111$ ls -L gs://bucket-name/directory
gs://bucket-name/directory/file1.tar.gz
Creation time: Wed, 10 Aug 2016 23:17:06 GMT
[...]
Hash (crc32c): a4X4cQ==
Hash (md5): 2xXYMp7aacmOZ+M57KHEbA==
[..]
gs://bucket-name/directory/file2.tar.gz
Creation time: Wed, 10 Aug 2016 23:26:16 GMT
[...]
Hash (crc32c): JVo9EA==
Hash (md5): XdrBIyCaADR9arH67ucdEA==
[..]
analogist@project-1111$ ls -L gs://bucket-name/directory | bash md5convert
db15d8329eda69c98e67e339eca1c46c directory/file1.tar.gz
5ddac123209a00347d6ab1faeee71d10 directory/file2.tar.gz