Odszyfrowywanie zaszyfrowanego tekstu

0

Witam, mam taki oto kod

from secrets import randbelow
import string

def generate_scheme(output):
	litery = string.printable+'ąśżźłóęńć'

	for litera in litery:
		litera_i_jej_id_str = litera + ' => ' + str(randbelow(1000000))
		output.write((litera_i_jej_id_str + '\n').encode('utf8'))

# zaszyfrowywanie
def encrypt_text(text, crypto_scheme):
	przypisane_kody_do_liter = crypto_scheme.split('\n')
	kody = {}
	for przypisany_kod_do_litery in przypisane_kody_do_liter:
		if przypisany_kod_do_litery != '':
			(litera, kod) = przypisany_kod_do_litery.split(' => ')
			kody[litera] = kod
	wynik = ''
	for litera in text:
		wynik += kody[litera]+' '
	return wynik.strip().replace(' ', ',')

# deszyfrowanie
def decrypt_text(text, crypto_scheme):
    przypisane_litery_do_kodow = crypto_scheme.split('\n')
    litery = {}
    text = text.replace(',', '')
    for przypisana_litera_do_kodu in przypisane_litery_do_kodow:
        if przypisana_litera_do_kodu != '':
            (litera, kod) = przypisana_litera_do_kodu.split(' => ')
            litery[kod] = litera
    wynik = ''
    for litera in text:
        wynik += litery[litera]
    return wynik.strip()
 
#with open('encryption_scheme.txt', 'wb') as plik:
# 	generate_scheme(plik)

with open('encryption_scheme.txt', 'rb') as plik:
	crypto_scheme = plik.read().decode('utf8')
	print(encrypt_text('żółć', crypto_scheme))
	print(decrypt_text(encrypt_text('żółć', crypto_scheme), crypto_scheme))

Jednak zamiast odszyfrować tekst podeja mi on tylko ććććććććććććććććććććććć

1

No to teraz weź debugger i zobacz gdzie się coś złego dzieje o_O Stawiasz breakpointy i przechodzisz po programie krok po kroku, linijka po linijce, patrząc na to jakie wyniki dostajesz. Nikt tego za ciebie robic nie będzie.
Jak skończysz dwójkę to nadal wołasz mamę?

1
# coding=utf-8
import random
import string


def generate_scheme():
    return {c: str(random.randint(0, 1000000)) for c in string.printable + 'ąśżźłóęńć'}


def encrypt_text(text, crypto_scheme):
    return ",".join(crypto_scheme[c] for c in list(text))


def decrypt_text(text, crypto_scheme):
    reverse_mapping = {code: letter for (letter, code) in crypto_scheme.items()}
    return "".join(reverse_mapping[c] for c in text.split(","))


def main():
    scheme = generate_scheme()
    ct = encrypt_text("żółć ala ma kota sierotka ma rysia 1234", scheme)
    print(ct)
    print(decrypt_text(ct, scheme))


main()

Masz, kod przepisany na wersje dla ludzi. Robi to samo, ale bez błędnego pisania i czytania z pliku (ładujesz tam printable do pliku, w tym znaki nowej linii i spacje! gdybyś go chociaż raz otworzył to moze byś o tym wiedział...).
Wyjdź od tego kodu, bo on działa poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1