MD5 файл ha sh функционирует в R, возвращая разные значения? - PullRequest
1 голос
/ 21 января 2020

MD5 га sh должен возвращать одно и то же значение независимо от того, кто и где выполняет расчет га sh.

Тем не менее, используя три разных метода в одном файле, мы видим три разных ответа (!?).

Здесь файл.

MD5 га sh в соответствии с Amazon Web Services :

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 га sh с использованием библиотеки digest -

library(digest)
digest("Downloads/pfd.RDS", algo=c("md5"))
# "2b049aba0269e46d35780c3e7d29a916"

А MD5 га sh с использованием openssl библиотеки -

library(openssl)
md5("Downloads/pfd.RDS")
# "8ceabf9bdd146ed12ba89533cd593d12"

Я не могу этого объяснить. Я ожидал, что все три значения будут одинаковыми, поскольку все они применяют один и тот же алгоритм (MD5) к одному и тому же файлу, но все они разные.

Вопрос

Почему не ha sh имеет одинаковые значения независимо от метода, использованного для создания MD5 га sh файла, и, что наиболее важно, как рассчитать ha sh в R так, чтобы он соответствовал MD5 га sh при условии на AWS (т.е. a921f713fbd730a51814fb6602048c16)?

ОБНОВЛЕНИЕ

В ма c терминал md5 Downloads/pfd.RDS возвращает a921f713fbd730a51814fb6602048c16 (соответствует значению AWS). До сих пор неясно, почему значения digest::digest() и openssl::md5() отличаются.

1 Ответ

3 голосов
/ 21 января 2020

Если вы хотите иметь sh содержимое файла по этому пути, вы должны сообщить каждой из функций, что. Попробуйте

digest("Downloads/pfd.RDS", file=TRUE, algo="md5")

и

md5(file("Downloads/pfd.RDS", open="rb"))

, иначе вы хэшируете само имя пути.

Они возвращают одинаковые значения в простом случае

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...