-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrsa.py
31 lines (24 loc) · 996 Bytes
/
rsa.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
BLOK_CIFRE = 300
BLOK_KARAKTERI = BLOK_CIFRE // 3
plaintext = ""
sifrovani_text = ""
def encrypt(plaintext, key):
ascii_plaintext = bytes(plaintext, "ASCII")
# Tekst se lomi na blokove duzine najvise BLOK_KARAKTERI chara
# Svaki char je predstavljen pomocu trocifrenog broja
blokovi = []
for i, chars in enumerate(ascii_plaintext[::BLOK_KARAKTERI]):
start = BLOK_KARAKTERI * i
end = BLOK_KARAKTERI * (i + 1)
blokovi.append(ascii_plaintext[start:end])
enkriptovani_blokovi = []
for blok in blokovi:
broj_plaintext = 0
for i, char in enumerate(list(blok)[::-1]): # lista se reversuje i pocinjemo od nizih cifara
broj_plaintext += (char * 10**(i*3))
enkriptovani_blokovi.append(pow(broj_plaintext, key[0], key[1]))
# Pad each block to BLOK_CIFRE
sifrovani_text = ""
for blok in enkriptovani_blokovi:
sifrovani_text += str(blok).rjust(BLOK_CIFRE, "0")
return sifrovani_text