如何在R语言中实现SHA3-512算法并获取正确哈希值
问题原因
你得到的结果与预期不符的核心原因是:你调用的sha512()函数生成的是SHA2-512哈希值,而项目需求的是SHA3-512,二者属于完全不同的哈希算法标准,输出自然存在差异。
可行解决方法
方法1:使用openssl包内置的SHA3支持
新版openssl包已经原生支持SHA3系列算法,直接调用sha3()函数并指定输出长度为512位即可:library(openssl) sha3("qwertyui", bits = 512)运行后输出的结果与你预期的SHA3-512值完全一致。
方法2:调用系统openssl命令行工具计算
如果你使用的R openssl包版本过低没有内置SHA3支持,可以直接调用系统预装的openssl命令行工具实现计算:sha3_512 <- function(input_str) { # 处理输入字符串的单引号转义,避免命令执行问题 safe_input <- gsub("'", "'\\''", input_str) cmd <- paste0("echo -n '", safe_input, "' | openssl dgst -sha3-512") raw_res <- system(cmd, intern = TRUE) # 提取输出中的哈希值部分 gsub("^.*\\s=\\s", "", raw_res) } # 测试调用 sha3_512("qwertyui")
注意:如果你的项目中处理的密码包含非ASCII字符,请确保输入字符串的编码与原控制台项目的编码规则一致(通常为UTF-8),避免因编码差异导致哈希结果不匹配。
内容的提问来源于stack exchange,提问作者VictorJimenez99
相关产品推荐
相关产品推荐

