我的教授最近发布了一个供我们使用的示例函数,该函数检查输入(在本例中为“名称”),并运行多个测试以返回true或false。然而,他有点把我们深深地理解了它为什么会做。我个人理解实际行的功能,但是我不理解它们为什么这样做,因此,如果可以向我解释为什么每一行都这样做,将不胜感激。 SHA1验证如何?
import hashlib
def enc_check(name):
hash = hashlib.sha1()
for i in xrange(10):
hash.update(name[i::10])
dig = map(ord, hash.digest())
if sum(dig[::2]) != sum(dig[1::2]) or sum(dig[:len(dig)/2]) != sum(dig[len(dig)/2:]):
return False
return True
答案 0 :(得分:2)
关于此功能的任何内容都没有任何实际意义。如果您了解每一行,就不会缺少更深层的含义。
从根本上来说,这似乎是一种测试,以找到表现出难以实现的一组属性的特殊值,特别是如果您从索引0开始从输入中获取十分之一的字符,则从索引0开始获取十分之一的字符,然后是每个从索引1的十分之一开始,依此类推,依此类推,直到从索引中获得完整的数据为止:0、10,... 10n,1、11,...,10n + 1、2、12 ...,10n + 2,......,9,19,...,10n + 9,那10个逐渐变大的字符串中的每个将具有一个哈希值,其中: >
我不知道这两个条件对所有10个散列都成立的精确几率,但这不可能很高。我认为您的教授有一些符合标准的例子,但我不知道他们对您的这种胡说八道。