活动存储校验和混乱

问题描述 投票:0回答:1
我刚刚使用 Active Storage 将测试文件(png 图像)上传到 Amazon S3。

我注意到的一个问题是,从 S3 API 返回的文件的

etag

 与存储在该文件数据库中的 Blob 记录中的 
checksum
 不同。

我在此网站上运行了 MD5 校验和:

https://appdevtools.com/checksum-calculator 来查找该文件,它与 S3 etag

匹配。

为什么存储在 DB blob 中的

checksum

 不同?

测试文件.png:

Amazon S3 eTag via API: f1d0a62d6890cf4c4ecb4337c6d789df `checksum` in Database: 8dCmLWiQz0xOy0M3xteJ3w== MD5 Checksum when checking on website: f1d0a62d6890cf4c4ecb4337c6d789df
任何人都可以解释一下这一点以及数据库中的内容与文件有何关系吗?

谢谢

ruby-on-rails checksum rails-activestorage
1个回答
0
投票
是相同的值,存储方式不同。

"f1d0a62d6890cf4c4ecb4337c6d789df"

 是一个十六进制字符串。

"8dCmLWiQz0xOy0M3xteJ3w=="

是一个base64编码的字符串。

两者都代表校验和的相同原始字节。

从 Base64 转换为十六进制:

Base64.decode64('8dCmLWiQz0xOy0M3xteJ3w==').unpack('H*') => ["f1d0a62d6890cf4c4ecb4337c6d789df"]
从十六进制转换为base64:

Base64.encode64(["f1d0a62d6890cf4c4ecb4337c6d789df"].pack('H*')).chomp => "8dCmLWiQz0xOy0M3xteJ3w=="
    
© www.soinside.com 2019 - 2024. All rights reserved.