为何相同字符串在R与C#中生成的MD5哈希值不一致?
问题:无法在R中复现C#生成的MD5哈希值
C#代码及结果
以下是生成哈希的C#代码:
private static string CreateHashKey(object myString) { byte[] buffer = JsonSerializer.SerializeToUtf8Bytes(myString); var cryptoTransform = MD5.Create(); return BitConverter.ToString(cryptoTransform.ComputeHash(buffer)); }
当传入字符串"Bangalore"时,生成的哈希值为:92-E7-92-78-E7-D9-37-C1-AF-AC-D7-E6-B2-CD-B6-5E
R中的尝试及结果
我在R中尝试了多种方式,均无法得到相同结果:
使用digest包
代码:
library(digest) digest::digest(serialize("Bangalore", connection = NULL),"md5")结果:
e85798ec7dd5003d8d464f6c5d8de5c5代码:
digest::digest(serialize("Bangalore", connection = NULL,ascii = TRUE),"md5")结果:
5377a11b9792c774ddd726361c56d8f2代码:
digest::digest(charToRaw('Bangalore'),"md5")结果:
bf19f50fed3db016cb78cdb029db3034代码:
digest::digest(serialize(charToRaw('Bangalore'),connection = NULL,ascii = TRUE),"md5")结果:
be7696c777f9418e8e853084d6ddf0ae
使用openssl包
代码:
library(openssl) md5("Bangalore") # "1bc99cb2f4153c2d0d8025ee5575b2a0"
结果:1bc99cb2f4153c2d0d8025ee5575b2a0
有资料提到转换为字节可解决问题,但目前仍未奏效……
内容的提问来源于stack exchange,提问作者shwan
相关产品推荐
相关产品推荐

