Python 如何将Google云存储base64 md5sum转换为十六进制版本?

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来获得

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来获得该值

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