假设我要处理图像文件,然后使用其md5哈希作为文件名将其存储在磁盘上。天真的方法将包括以下步骤:
file(file_name, "rb")
创建到R中已处理图像文件的连接; openssl::md5()
之类的函数应用于连接以获取md5哈希值; 但是,这似乎效率低下,因为第二步和第三步需要额外的磁盘IO。
我想知道是否存在一种在内存中生成伪造文件的方法,以便可以直接应用openssl::md5()
来获得相同的md5总和,而不必先将文件存储在磁盘上。
这可能吗?如果是这样,该怎么做?
答案 0 :(得分:0)
Cross posting my reddit answer:
The hint is the the help page to openssl::md5
, which states that the input object can be a raw vector. So:
msg <- "The quick brown fox"
openssl::md5(charToRaw(msg))
md5 a2:00:4f:37:73:0b:94:45:67:0a:73:8f:a0:fc:9e:e5
compare to:
writeBin(charToRaw("The quick brown fox"), 'tmp.dat', useBytes=TRUE)
system('md5 tmp.dat')
MD5 (tmp.dat) = a2004f37730b9445670a738fa0fc9ee5
Gives the same output.