文件的R sha1sum

欧洲

我想使用R做一个文件的sha1总和。

我的系统是运行RStudio 1.4的Windows 10。

这有效:

md5sum <- md5sum(file)

这不是:

sha1sum <- sha1sum(file)

“找不到函数sha1sum”

r2evans

比较openssl::sha1digest::sha1

writeLines("foo", "quux.txt")
system2("sha1sum", c("quux.txt"), stdout = TRUE)
# [1] "855426068ee8939df6bce2c2c4b1e7346532a133 *quux.txt"
as.character(openssl::sha1(file("quux.txt")))
# [1] "855426068ee8939df6bce2c2c4b1e7346532a133"
digest::sha1("quux.txt")
# [1] "ad1a86aea4360a7d5c5fb0265f00438f6d7664a2"

这开始显示出问题,一个人不同意。一种查看情况的方法是更改​​文件的内容,但保持文件名相同:

writeLines("foofoofoo", "quux.txt")
as.character(openssl::sha1(file("quux.txt")))
# [1] "47673505b61b548b176d3d0449d7f6a4f3e9e09e"
system2("sha1sum", c("quux.txt"), stdout = TRUE)
# [1] "47673505b61b548b176d3d0449d7f6a4f3e9e09e *quux.txt"
digest::sha1("quux.txt")
# [1] "ad1a86aea4360a7d5c5fb0265f00438f6d7664a2"

前两个已更改(这是预期的)并保持不变,但是尽管内容已更改,但前三个digest::sha1 仍未更改。从理论上讲,两个内容不同的文件可能会产生相同的SHA1校验和,但事实并非如此。

顺便说一句:根据您的使用,不再建议使用SHA1进行安全哈希,而首选SHA256或SHA512或其他更强大的哈希函数。

另一个BTW:请不要忘记使用file(.)in openssl::sha1,否则您将犯完全相同的错误。

writeLines("foo", "quux.txt")
openssl::sha1("quux.txt")
# [1] "08a72b849478907ae9de2ff46ba53ce6aeeba360"
as.character(openssl::sha1(file("quux.txt")))
# [1] "855426068ee8939df6bce2c2c4b1e7346532a133"

writeLines("foofoofoo", "quux.txt")
openssl::sha1("quux.txt")
# [1] "08a72b849478907ae9de2ff46ba53ce6aeeba360"
### has not changed!

as.character(openssl::sha1(file("quux.txt")))
# [1] "47673505b61b548b176d3d0449d7f6a4f3e9e09e"

帮助文档可能对此并不十分清楚。来自?openssl::sha1

       x: character vector, raw vector or connection object.

它在字符串或文件上运行的事实是多态的……并且尽可能地方便,它也可能导致(经常!)对正在发生的事情的误解。如果您考虑一下,该函数如何知道您要查找的内容旨在成为文件?如果检查file.exists是否存在,那么它将为您提供文件内容的校验和;如果不是,则为字符串的校验和。如果您运行代码并期望它检查文件并且该文件不存在,则可能会出现错误,但是返回您认为是文件的字符串和认为是字符串的函数的校验和将会...打破用例中的许多假设。(我建议他们使用明确的参数,例如text=file=con=。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

目录中文件的sha1sum

来自分类Dev

目录中文件的sha1sum

来自分类Dev

验证 sha1sum 并打印损坏文件的目录和文件名

来自分类Dev

如何在不同时间用相同的sha1sum重新创建PHAR文件?

来自分类Dev

比较tarball与sha1sum

来自分类Dev

使用awk使用sha1sum进行哈希

来自分类Dev

如何使sha1sum在Mac OS X上运行?

来自分类Dev

使用awk使用sha1sum进行散列

来自分类Dev

kali.org上的Sha1Sum

来自分类Dev

在git-bash(MinGW)上安装sha1sum

来自分类Dev

Java SHA1输出与Linux的sha1sum命令不同

来自分类Dev

带有sha1和sha1sum的hashdeep创建不同的结果

来自分类Dev

搜索具有已知sha1 sum的文件

来自分类Dev

Git哈希输出与sha1sum不匹配,为什么?

来自分类Dev

为什么这些重复的SD卡的内容具有不同的sha1sum?

来自分类Dev

即使我不进行任何修改,提交sha1sum也会被更改

来自分类Dev

sha1sum报告相对于openssl的不同哈希值

来自分类Dev

为什么sha1sum在相同输入下的行为不同?

来自分类Dev

如何在sh shell中用sha1sum透明替换shasum?

来自分类Dev

命令行中的sha1sum与其他来源不同

来自分类Dev

将“ sha1sum”传递到“ tar”输出时使用不同的哈希码

来自分类Dev

sha1sum函数如何为您提供唯一的哈希?

来自分类Dev

使用GET方法将sha1sum插入curl的URL

来自分类Dev

在wine中安装IE8-错误重命名/ sha1sum不匹配winetest.cat

来自分类Dev

如何从ObjectDatabase检索文件的SHA1

来自分类Dev

如何从ObjectDatabase检索文件的SHA1

来自分类Dev

如何检查文件的SHA1哈希?

来自分类Dev

从sha512sum的输出中禁止文件名

来自分类Dev

列出大于指定大小的文件,然后创建它们的md5sum或sha256sum

Related 相关文章

热门标签

归档