首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系列化对象的R-库- MD5中MD5散列的区别

系列化对象的R-库- MD5中MD5散列的区别
EN

Stack Overflow用户
提问于 2017-01-26 13:49:27
回答 1查看 493关注 0票数 2

我想为一个R对象计算一个MD5哈希。这通常是通过序列化对象来完成的。我知道有两个不同的R库可以计算MD5散列-摘要库和openssl库。但是这两个返回不同的哈希值。下面是openssl库的一个示例:

代码语言:javascript
复制
test <- 1:100

library(openssl )
md5(serialize(test, connection = NULL))
# returns: md5 23:a8:b3:40:9e:08:a0:3d:30:6e:3d:3d:cb:fe:21:57 

下面是摘要库的示例:

代码语言:javascript
复制
library(digest)
digest(test,"md5",serialize = T)
# returns: [1] "83777773fa047247723ad5a255963144"

为什么这些哈希值不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-26 15:21:59

简短回答

如果对象被序列化,digest将跳过一些前导位。

例如:

代码语言:javascript
复制
> .t <- serialize(test, connection = NULL)
> md5(.t[seq(15, length(.t))])
md5 83:77:77:73:fa:04:72:47:72:3a:d5:a2:55:96:31:44

长答案

如果R版本不同,则serialize(1:100, connection = NULL)的结果是不同的。

根据base::serialize的源代码,R在序列化过程中编写了一些表示R版本的整数。

digest::digest在计算md5sum之前跳过这些位,因此结果将是一致的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41874958

复制
相关文章

相似问题

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