SHA1验证功能

问题描述 投票:1回答:1

我的教授最近发布了一个示例函数供我们使用,它检查输入,在本例中为“name”,并运行多个测试以返回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
python python-2.7 python-2.x sha hashlib
1个回答
2
投票

关于这个功能没有任何东西可以产生任何实际意义。如果你理解了各条线,你就不会错过一些更深刻的含义。

它基本上似乎是一个测试,找到一些特殊的值,展示一个难以实现的属性集,特别是如果你从索引0开始从输入的每十分之一,然后从索引0每十分之一后跟每十分之一的索引1,依此类推,直到您按顺序从索引获得完整数据:0,10,... 10n,1,11,...,10n + 1,2,12,...... ,10n + 2,......,9,19,...,10n + 9,这10个逐渐变大的字符串中的每一个都将具有哈希,其中:

  1. 偶数字节的总和与奇数字节的总和相同,并且
  2. 前半部分字节的总和与后半部分的总和相同。

我不知道这两个条件对于所有10个哈希都保持正确的准确几率,但它不能很高。我假设你的教授有一些符合标准的例子,但我不知道他们对这个废话的期望是什么。

© www.soinside.com 2019 - 2024. All rights reserved.