1
Challenge #6내가 현재 일하고이 Cryptopals 도전에서 반복-키 XOR 암호
속보. 정확한 해밍 함수와 가능한 FindKey 및 XOR 함수가 가능합니다. 지금까지
, 나는이 코드를 가지고 ...
import base64
def binary(n):
return '{0:08b}'.format(n)
def Hamm(s1, s2):
d = 0
for c1, c2 in zip(s1, s2):
if c1 != c2:
b1 = binary(c1)
b2 = binary(c2)
for a, b in zip(b1, b2):
if a != b:
d += 1
return(d)
def FindKey(b64_s):
key_dict = {}
low = 9999
previous = 0
for size in range(2, 40):
ham1 = b64_s[previous : size + 1]
ham2 = b64_s[size + 1 : size * 2 + 1]
low = Hamm(ham1, ham2)/size
key_dict = {low : size}
previous = size
return(key_dict[low])
def XOR(byte_string):
result = ''
key = max(byte_string, key=byte_string.count)^ord('e')\
for b in byte_string:
result += chr(b^key)
print(result)
# get base64 file
b64_string = ''
with open("TestFile_Challenge06_CSIS463.txt") as f:
for line in f:
b64_string = b64_string + str(line)
XOR(base64.b64decode(b64_string))
나는 내 문제를 업데이트 :
은 좀 그 문제를 해결하도록 코드를 수정했습니다. 다시 한번 보실래요? @ Shakkhar –