• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Odkodowanie zakodowanego tekstu

VPS Starter Arubacloud
+1 głos
545 wizyt
pytanie zadane 11 marca 2019 w Python przez Pico Obywatel (1,330 p.)
zamknięte 11 marca 2019 przez Pico

Witam, mam taki 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[kod]
	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))

I ten kod zamiast odkować tekst, który wcześniej zakodował, pokazuje mi coś takiego

833726,373882,85859,159132  <------ to jest dobrze
ććććććććććććććććććććććć <----------- a to źle

komentarz zamknięcia: Problem rozwiązany w najlepszej odpowiedzi

1 odpowiedź

0 głosów
odpowiedź 11 marca 2019 przez Mr-root Gaduła (3,750 p.)
wybrane 11 marca 2019 przez Pico
 
Najlepsza

Cześć,

Moja propozycja to

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.split(',')
    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 l in text:
        kod = litery.get(l)
        wynik += kod
    return wynik.strip()


with open('encryption_scheme.txt', 'wb') as plik:
    generate_scheme(plik)

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

Mam nadzieję, że pomogłem :-)

komentarz 11 marca 2019 przez Pico Obywatel (1,330 p.)
Dziękuję z całego serduszka, sam bym na to nie wpadł jeszcze przez baaardzo długi czas. Oczywiście odpowiedź oznaczam jako najlepszą <3

Podobne pytania

0 głosów
2 odpowiedzi 1,814 wizyt
pytanie zadane 2 września 2017 w PHP przez ThePatrykOOO Dyskutant (8,380 p.)
0 głosów
0 odpowiedzi 94 wizyt
pytanie zadane 11 stycznia 2022 w C# przez Jakub Świniarski Początkujący (260 p.)
+1 głos
2 odpowiedzi 108 wizyt

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...