MD5: 为什么我对相同的字符串得到不同的结果?

huangapple go评论60阅读模式
英文:

MD5: Why am I getting different results for the same string?

问题

我期望以下代码在每种情况下返回相同的结果,因为字符串值相同,但实际上每次都返回了不同的结果。我可以采取什么措施(如果有的话)来解决这个问题?

import hashlib

a = 'some text'
b = 'some text'
hashA = hashlib.md5(b'{a}').hexdigest()[:8]
hashB = hashlib.md5(b'{b}').hexdigest()[:8]
hashT = hashlib.md5(b'some text').hexdigest()[:8]

print(hashT) # 552e21cd
print(hashA) # e78fce13
print(hashB) # 09b94c63
print (a==b) # True

这段代码中,您使用了'{a}''{b}',这会将ab视为普通的字符串,而不是变量的值。为了修复这个问题,您应该使用字符串的format方法,将ab的值插入到哈希计算中。下面是修复后的代码:

import hashlib

a = 'some text'
b = 'some text'
hashA = hashlib.md5(b'{a}'.format(a=a).encode()).hexdigest()[:8]
hashB = hashlib.md5(b'{b}'.format(b=b).encode()).hexdigest()[:8]
hashT = hashlib.md5(b'some text').hexdigest()[:8]

print(hashT) # 552e21cd
print(hashA) # 552e21cd
print(hashB) # 552e21cd
print(a==b) # True

这样,您应该获得相同的结果。

英文:

I expected the following code to return the same result in each case since the string values are the same but instead got a different result each time. What can I do (if anything) to address this?

import hashlib

a = 'some text'
b = 'some text'
hashA = hashlib.md5(b'{a}').hexdigest()[:8]
hashB = hashlib.md5(b'{b}').hexdigest()[:8]
hashT = hashlib.md5(b'some text').hexdigest()[:8]

print(hashT) # 552e21cd
print(hashA) # e78fce13
print(hashB) # 09b94c63
print (a==b) # True

答案1

得分: 3

因为前缀是f用于格式化字符串。a、b和'some text'是不同的。

英文:

Because the prefix is f for formatted strings. a, b and 'some text' are different.

huangapple
  • 本文由 发表于 2023年2月10日 04:36:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/75404179.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定