Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python中的md5哈希生成器转换为R_Python_R_Api_Hash_Md5 - Fatal编程技术网

将python中的md5哈希生成器转换为R

将python中的md5哈希生成器转换为R,python,r,api,hash,md5,Python,R,Api,Hash,Md5,我正在尝试使用Cryptopia的私有API。为了使用私有API,需要post参数的Base64编码MD5哈希。我从中找到了一个python代码 在将代码翻译成R时,md5哈希生成器给我带来了麻烦。python和R的哈希结果是不同的。请告诉我如何修理 Python: post_parameters = {'Currency': 'BTC'} post_data = json.dumps(post_parameters) md5 = hashlib.md5() jsonparams = post_

我正在尝试使用Cryptopia的私有API。为了使用私有API,需要post参数的Base64编码MD5哈希。我从中找到了一个python代码

在将代码翻译成R时,md5哈希生成器给我带来了麻烦。python和R的哈希结果是不同的。请告诉我如何修理

Python:

post_parameters = {'Currency': 'BTC'}
post_data = json.dumps(post_parameters)
md5 = hashlib.md5()
jsonparams = post_data.encode('utf-8')
md5.update(jsonparams)
rcb64 = base64.b64encode(md5.digest()).decode('utf-8')
R:


post_参数好吧,一个问题是
toJSON
json.dumps
对json文件中冒号后是否应该有空格有不同的看法。我明白了

# pyhton
jsonparams
# '{"Currency": "BTC"} 
# R
cat(jsonparams)
# {"Currency":"BTC"}
因此,由于字符串不同,因此它们的MD5散列不会完全相同。但是,除非API有非常严格的空白规则,否则这应该不是什么大问题

另一件事是,如果您只想匹配字符串的哈希值,那么应该在R中使用
serialize=FALSE
digest()
函数

rcb64 <- digest::digest(jsonparams, algo="md5", serialize = FALSE, raw=TRUE)


由于您的字符串中似乎只有ASCII值,因此您需要UTF-8编码这一事实实际上不会对结果产生任何影响。

对于R
base64encode
函数,您使用的是什么软件包?
rcb64 <- digest::digest(jsonparams, algo="md5", serialize = FALSE, raw=TRUE)
# R
RCurl::base64Encode(digest::digest("hello", algo="md5", serialize = FALSE, raw=TRUE))
# [1] "XUFAKrxLKna5cZ2REBfFkg=="
# python
md5 = hashlib.md5()
md5.update("hello")
base64.b64encode(md5.digest())
# 'XUFAKrxLKna5cZ2REBfFkg=='