python - 获取长十六进制哈希值

标签 python r encryption hash cryptography

如何将此 Python 代码转换为 R?

import hashlib

def str_buckets(a, b, buckets):
  return (int(hashlib.md5(str(a + ',' + b).encode('utf-8')).hexdigest(), 16) & 4294967295) % buckets

我会写

hashlib.md5(b'x,y').hexdigest()

digest::digest("x,y", algo="md5", serialize=FALSE)

他们都给我输出 f10bc3c94b77e1d6b9f98106daf335c1

但在Python中

int(hashlib.md5(b'x,y').hexdigest(), 16)

正在输出320405033267698290319193645506345776577

是否有一个R相当于pythonint(<>, 16)

最佳答案

正如评论中所建议的,R 本身不具备处理大整数的能力(仅 32 位)。这将给出正确的答案:

d <- digest::digest("x,y", algo="md5", serialize=FALSE)
library(Rmpfr)
m <- mpfr(d,precBits=200,base=16)
## 1 'mpfr' number of precision  200   bits 
## [1] 320405033267698290319193645506345776577

但是在 R 中进一步处理这个问题可能具有挑战性。我什至没有找到一种方法来获得与它等效的字符串,该字符串比以下内容更干净:

gsub("\\.0+$","",format(m))
## [1] "320405033267698290319193645506345776577"

安装Rmpfr 软件包需要安装MPFRGMP .

关于python - 获取长十六进制哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58053163/

相关文章:

c# - 使用 C# 中的各种密码强度和算法通过 SSL 连接到服务器

python - 在 python 中是否有等同于 get() 的东西?

python、Django 与使用 urllib2 发送 pdf 相关

python - 过滤掉列表中稳定值的更多 pythonic 方法

Python:从0到16的所有2的幂

r - 如何减少 R 列表中的值

r - R 是否可以轻松获得更高分辨率的 coaSTLine 数据

无法加载 R lapack 例程

database - Perl - SQLite3 数据库加密

javascript - 使用 cryptojs 的最佳选择是什么,将 key 存储在客户端和服务器端,还是生成 key 并将其以某种方式传递给另一端?