已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
上个月关门了。
Improve this question
我正在尝试将计算SHA-256哈希的Python脚本转换为Java Groovy,以便在JMeter中使用。然而,我遇到了Python和Groovy之间生成的哈希值的差异。我希望得到一些关于如何取得一致结果的指导。
Python代码:
import hashlib
def get256SHA(string):
m = hashlib.sha256()
m.update(string.encode('utf-8'))
return m.hexdigest()
hashedValue = get256SHA("string")
Java Groovy代码:
import java.security.MessageDigest
String get256SHA(String string) {
MessageDigest md = MessageDigest.getInstance("SHA-256")
byte[] bytes = string.getBytes("UTF-8")
byte[] digest = md.digest(bytes)
StringBuffer hexString = new StringBuffer()
for (byte b : digest) {
hexString.append(String.format("%02x", b & 0xff))
}
return hexString.toString()
}
String input = "string"
String hashedValue = get256SHA(input)
vars.put("hashedValue", hashedValue)
在JavaGroovy代码中,我尝试复制Python逻辑来计算SHA-256哈希。但是,Python和Groovy实现之间产生的哈希值并不匹配。谁能帮我找出导致这种不一致的潜在差异,并建议对Java Groovy代码进行更正?
经过再次调试,我得到的代码下面没有错,错的是我的输入没有trim。而且这是一条很长的路,你可以试试下面的答案,这是一条很好的路。
1条答案
按热度按时间rlcwz9us1#
JMeter中有__digest()函数,它可以使用各种算法加密值。
在你的情况下,它会像这样简单:
请参阅Apache JMeter Functions - An Introduction文章以了解有关JMeter函数概念的更多信息。
如果你仍然想使用Groovy,最简单的方法是使用DigestUtils.sha256Hex()函数: