首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的MD5文件哈希函数返回不同的值?

R中的MD5文件哈希函数返回不同的值?
EN

Stack Overflow用户
提问于 2020-01-21 11:48:44
回答 1查看 168关注 0票数 1

无论谁在何处执行散列计算,MD5散列都应该返回相同的值。

然而,在同一文件上使用三种不同的方法,我们会看到三种不同的答案(!?)。

文件是Here的。

MD5散列according to Amazon Web Services为:

代码语言:javascript
复制
library(dplyr)
"https://collidr-api.s3-ap-southeast-2.amazonaws.com/pfd.RDS" %>% curlGetHeaders %>% .[6] %>% trimws %>% 
  strsplit(., "ETag: ") %>% .[[1]] %>% .[2] %>% 
  { substr(., 2, nchar(.)) } %>% { substr(., 1, nchar(.) - 1)}
# "a921f713fbd730a51814fb6602048c16"

MD5散列using the digest library

代码语言:javascript
复制
library(digest)
digest("Downloads/pfd.RDS", algo=c("md5"))
# "2b049aba0269e46d35780c3e7d29a916"

而MD5散列using openssl library

代码语言:javascript
复制
library(openssl)
md5("Downloads/pfd.RDS")
# "8ceabf9bdd146ed12ba89533cd593d12"

我无法解释这个。我认为这三个值应该是相同的,因为它们都对同一文件应用了相同的算法(MD5),但这三个值是不同的。

问题

为什么无论用什么方法生成文件的MD5哈希,哈希值都不一样,最重要的是,我如何计算R中的哈希值,使其与亚马逊网络服务提供的MD5哈希(即a921f713fbd730a51814fb6602048c16)相匹配?

更新

在mac终端中,md5 Downloads/pfd.RDS返回a921f713fbd730a51814fb6602048c16 (与AWS值一致)。仍然不清楚为什么digest::digest()openssl::md5()的值是不同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 11:59:12

如果你想散列该路径下的文件内容,你需要告诉每个函数。试一试

代码语言:javascript
复制
digest("Downloads/pfd.RDS", file=TRUE, algo="md5")

代码语言:javascript
复制
md5(file("Downloads/pfd.RDS", open="rb"))

否则,您就是在散列路径名本身。

在简单的情况下,这些函数返回相同的值

代码语言:javascript
复制
cat("hello", file="hello.txt")
digest("hello.txt", file=TRUE, algo="md5")
# [1] "5d41402abc4b2a76b9719d911017c592"
md5(file("hello.txt", open="rb"))
# md5 5d:41:40:2a:bc:4b:2a:76:b9:71:9d:91:10:17:c5:92 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59833931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档