快速和脏的二进制xor函数

时间:2012-10-10 06:30:38

标签: python hash binary

the basic function i am trying to do嘿,我再次找到了堆积溢出的众神。

我只是想找到一种方法来开始使用简单的xor哈希函数。由于以太网电缆已经神秘地从楼上的路由器断开(再次),我有点无法访问我的常用来源。我离题了。

我需要做的是能够将十位与来自二进制字符串的后十位进行折叠,并将xor它们相互折叠。所以我在想 伪码

Raw input = (binary string or S)
Def function xor:
    Find Len of s
    Loop
        [0:9], [10:19] = xorcheck
        Loop 
            Xor [0:] & [10]
        Return result 
    [0 +1:] & [10 + 1:]
Return loop to xorcheck and store the.returned result.            
                       Variable hash ,maybe)
If second [:] return "none"
Divide Len by ten,
If true add "1000000000"
Else Add 0
Check if Len is / 10
if true print hash
Else add 0, check Len /10

基本上它的light python脚本会用二进制创建一个哈希。这里有一些例子,我看过但是它们做得太多了,比如说是十六进制。我真正需要的只是函数xor二进制字符串并输出结果和填充整个字符串的方法,所以字符数是十的倍数。

我为质量差的问题道歉,因为我现在正在使用我的小型智能手机进行研究:'(

编辑更新

我已将Inspector的代码编辑为

   my_text = raw_input ()
''.join(bin(ascii)[2:] for ascii in [ord(char) for char in my_text])
def myHash(binary_encoded_ascii):
    answer = 0
    binstr = binary_encoded_ascii + '1'
    binstr += '0'*(20 - (len(bitstr) %20))
    for i in range(len(binstr)/20):
        s = binstr[20*i:20*(i+1)]
        s1,s2 = s[:10], s[10:]
        total += int(s1, 2) ^ int(s2, 2)
        return total
    print total

它似乎要求提供文本,但不会打印任何值。如何让它输出结果,以便我可以看到它是否真的在做任何事情。

1 个答案:

答案 0 :(得分:1)

阅读完作业后的问题:

首先,您需要将文本转换为其字符的ascii值的二进制编码:

''.join(bin(ascii)[2:] for ascii in [ord(char) for char in my_text])

这为您提供了文本中所有字符的二进制编码ascii值,然后您可以将其传递给哈希函数

def myHash(binary_encoded_ascii):
    answer = 0
    binstr = binary_encoded_ascii + '1'
    binstr += '0'*(20 - (len(bitstr) %20))
    for i in range(len(binstr)/20):
        s = binstr[20*i:20*(i+1)]
        s1,s2 = s[:10], s[10:]
        answer += int(s1, 2) ^ int(s2, 2)
    return answer