나는 내 친구에게서 도전을 받았습니다. 그는 기능을 바꾸어야한다고 말했고 입력 사항을 찾아야합니다. 하지만 몇 시간 동안 논리를 생각하고 코드에서 생각하는 것을 작성하는 방법에 매달 렸습니다.암호문 블록 체인 XOR "암호 해독"암호 해독
def hash_cbc(input):
initial = 'a'
key = 'netsos'
output = [ord(initial)]
def enc(c, key, i):
z = key[i % len(key)]
return (c + ord(z))^ord(z)
for i in range(len(input)):
prev_char = output[i]
next_char = enc(prev_char, key, i)^ord(input[i])
output.append(next_char)
return output
이 알고리즘의 출력이되어야합니다 : 나는 그래서 입력을 얻을 수있는 기능을 전환 할 필요가
97, 194, 299, 411, 533, 654, 768, 873, 965, 1066, 1164, 1272, 1399, 1512, 1603, 1706, 1792, 1895, 1994, 2110, 2215, 2310, 2404, 2517, 2645, 2762
그는 나에게이 알고리즘을했다. 입력은 문자열이어야합니다.
제발 도와주세요, 몇 시간 동안 아무런 결과가 없었습니다. XOR 함수를 뒤집을 생각 이었지만 실제로 쓰는 방법을 혼란스럽게 만들었습니다.
내가하고이 알고리즘을 생각이
enc(prev_char, key, i)^1st ordinal input = 1st output
enc(prev_char, key, i)^2nd ordinal input = 2nd output
enc(prev_char, key, i)^3rd ordinal input = 3rd output
하지만 루프
에 내가 "ENC (prev_char, 키가 있기 때문에 반대하는 방법을 잘 아니라고하고
등, i) "나를 혼란스럽게하는 부분
나 자신의 리버스 코드를 만들려고했다.
def enc(c, key, i):
Awalan = input("Insert numbers: ")
Awalan_split = Awalan.split (', ')
Awalan_len = len(Awalan_split)
initial = 'a'
key = 'netsos'
output = [ord(initial)]
z = key[i % len(key)]
return (c + ord(z))^ord(z)
for i in range(Awalan_len):
prev_char = output[i]
next_char = int(Awalan_split[i])^enc(prev_char, key, i)
char_convert = chr(next_char)
return(char_convert)
print(char_convert)
행운은 없지만 출력이 부족합니다. 내 코드에 어떤 문제가 있습니까?
그리고이 문제를 해결하도록 시도에 정확히 도움이 필요 하신가요? –
나는 XOR (^) 함수를 되 돌리려고했지만 운이 없다. 어쩌면 당신은 나에게 알고리즘 제안을 줄 수있다. –
주어진 일을하는 프로그램을 작성하는 것은 우리가 여기서하는 일이 아니다. StackOverflow는 Q & A 기술 자료가 될 수 있습니다 - 표준 질문 모음 (다른 사람이 직면 할 수 있음)과 답변. 더 광범위하게 적용 할 수있는 잠재적 인 잠재력이있는 질문을 찾을 수 있다면 해당 질문의 주변 요소를 제거하여 해당 적용 가능성을 더욱 명확하게 만들 수 있습니다. (그리고 * 해당 질문에 제목을 집중 시키십시오. 노력하고있어) 도움이 될 것입니다. –