我的教授最近发布了一个供我们使用的示例函数,该函数检查输入(在本例中为“名称”),并运行多个测试以返回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开始从输入中获取十分之一字符,则从索引0中获取十分之一,然后从索引中获得十分之一1,依此类推,直到您从索引中获得以下完整数据为止:0,10,... 10n,1,11,...,10n + 1,2,12,... ,10n + 2,......,9、19,...,10n + 9,则这10个逐渐变大的字符串中的每一个都将具有哈希值,其中:


偶数字节的总和与奇数字节的总和相同,并且
字节的前一半之和与后一半之和相同。


我不知道这10个散列都满足这两个条件的精确几率,但是它不可能很高。我认为您的教授有一些符合标准的例子,但我不知道他们希望您如何看​​待这个废话。

关于python - SHA1验证功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55526708/

10-10 11:55