Algoritmo RSA python/bash

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Elia934e
Prode Principiante
Messaggi: 65
Iscrizione: giovedì 12 marzo 2015, 13:37
Sesso: Maschile

Algoritmo RSA python/bash

Messaggio da Elia934e »

Ciao, volevo implementare l'algoritmo rsa ad una immagine jpg. Il codice mi produce l'immagine in decimale, come richiesto, ma non fa più la riconversione in immagine... Cosa può essere??

Codice: Seleziona tutto

import os


#MCD
def mcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

#CALCOLA L'INVERSO
def multiplicative_inverse(e, phi):
    d = 0
    x1 = 0
    x2 = 1
    y1 = 1
    temp_phi = phi
    
    while e > 0:
        temp1 = temp_phi/e
        temp2 = temp_phi - temp1 * e
        temp_phi = e
        e = temp2
        
        x = x2- temp1* x1
        y = d - temp1 * y1
        
        x2 = x1
        x1 = x
        d = y1
        y1 = y
    
    if temp_phi == 1:
        return d + phi


#FUNZIONE PER CONTROLLO NUMERO PRIMO
def is_prime(num):
    if num == 2:
        return True
    if num < 2 or num % 2 == 0:
        return False
    for n in xrange(3, int(num**0.5)+2, 2):
        if num % n == 0:
            return False
    return True

#FUNZIONE PER GENERARE CHIAVI
def generate_keypair(p, q):
    if not (is_prime(p) and is_prime(q)):
        raise ValueError('ENTRAMBI I NUMERI DEVONO PRIMI.')
    elif p == q:
        raise ValueError('P e Q non possono essere uguali')

    n = p * q


    phi = (p-1) * (q-1)



    i=2
    e=0
    while e != 1:
      
        e = mcd(i, phi)
        i=i+1
    e=i-1

    d = multiplicative_inverse(e, phi)
    
    return ((e, n), (d, n))


#FUNZIONE PER CRIPTARE 
def encrypt(pk, plaintext):

    key, n = pk
   
    cipher = [(ord(char) ** key) % n for char in plaintext]
    #ritorna l'array di bytes
    return cipher

def decrypt(pk, ciphertext):
   
    key, n = pk
   
    plain = [chr((char ** key) % n) for char in ciphertext]

    return ''.join(plain)
    

if __name__ == '__main__':
   
    os.system('chmod 777 -R /home/oriol/Scrivania/conv.sh')
    os.system('./conv.sh')
    #os.system('chmod 777 -R /home/oriol/Scrivania/conv1.sh')
    #os.system('./conv1.sh')
    f1=open("/home/oriol/Scrivania/hex.txt", "r")
    f2=open("/home/oriol/Scrivania/finale.jpg","w")
    f3=open("/home/oriol/Scrivania/dec.txt","w")
    f5=open("/home/oriol/Scrivania/chiave_pubblica.txt","w")
    f6=open("/home/oriol/Scrivania/chiave_privata.txt","w")

    Testo=f1.read()
    testo_iniziale=Testo.strip('\n')
    testo_finale=testo_iniziale.strip(' ')


    print "RSA Encrypter/ Decrypter"+"\n\n"
    p = int(raw_input("Inserisci primo numero primo(17, 19, 23, etc): "))
    q = int(raw_input("Inserisci altro numero primo: "))

    print "Generazione della tua chiave pubblica/privata in corso . . ."
    public, private = generate_keypair(p, q)
    f5.write(str(public))
    f6.write(str(private))
    encrypted_msg = encrypt(private,testo_finale)

    print "Il tuo messaggio decriptato e': "
    dec=''.join(map(lambda x: str(x), encrypted_msg))
    f3.write(dec)
    print "Decriptazione con chiave pubblica ", public ," . . ."
    print "La tua chiave pubblica e': ", public 
    print "La tua chiave privata e': ", private
    print "Il tuo messaggio e':"

    decriptazione=decrypt(public, encrypted_msg)
    f2.write(decriptazione)

    print "INVIO EMAIL IN CORSO....\n"

    f1.close()
    f2.close()
    f3.close()
    f5.close()
    f6.close()
Allego anche conv.sh

Codice: Seleziona tutto

#! /bin/bash

xxd -p immagine.jpg | sed -e 's/^.*: //; s/[[:space:]][[:space:]]*.\{6,6\}$//' > hex.txt
e avvio.sh (per avviare il tutto)

Codice: Seleziona tutto

#! /bin/bash


chmod 777 -R "/home/Elia/Desktop/Prog8/prova.py"
python /home/Elia/Desktop/Prog8/prova.py

chmod 777 -R "/home/Elia/Desktop/Prog8/parentesi.sh"
/home/Elia/Desktop/Prog8/parentesi.sh
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti