-
Notifications
You must be signed in to change notification settings - Fork 4
/
rsa_nb_dkey.py
48 lines (44 loc) · 1.66 KB
/
rsa_nb_dkey.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/python
# RSA_NB_dkey.py
# Criptare e decriptare col cifrario RSA con input delle due chiavi Kpub e Kpriv
# programma ad uso didattico - only for didactic using
# il programma serve solo a capire i principi base dell RSA - the program intents only to explain the basic rules of RSA
# by Nanni Bassetti - http://www.nannibassetti.com - digitfor@gmail.com
def main():
global e,d,n
e = input('Inserisci e della chiave pubblica Kpub(e,n):')
d = input('Inserisci d della chiave privata Kpriv(d,n):')
n= input('Inserisci n:')
print '-'*80
print 'chiave pubblica KPub(',e,',',n,') chiave privata KPriv(',d,',',n,')'
print '-'*80
domanda=raw_input('Vuoi criptare o decriptare? (c/d):').lower()
if domanda == 'c':
criptare()
if domanda == 'd':
decriptare()
def criptare():
global criptato,e,n
testo = raw_input('Inserisci un testo da criptare:').lower()
criptato=[pow(ord(char),e,n) for char in testo]
# la funzione pow(x,y,z) e' pari a x^y mod n, quindi criptato=(mess_chiaro^e) mod n
print 'testo criptato: '
char=str(criptato)
char=char.replace(',','')
char=char.replace('[','')
criptato=char.replace(']','')
print '', criptato
def decriptare():
global decriptato,d,n
testo = raw_input('Inserisci un testo da decriptare:').lower()
print 'chiave pubblica KPub(',e,',',n,') chiave privata KPriv(',d,',',n,')'
sp = []
sp = testo.split(' ')
decriptato = [chr(pow(int(char),d,n)) for char in sp] # decriptato = (mess_crypt^d) mod n
char=str(decriptato)
char=char.replace(", ","")
char=char.replace("[","")
char=char.replace("]","")
decriptato=char.replace("'","")
print 'testo decriptato: ',decriptato
main()