Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Crash algoritmo RSA in VB... per esame maturità, HELP PLZ!!

    Ciao a tutti
    volevo portare per l'orale della maturità un piccolo software che elaborasse le chiavi pubbliche e private dell'algoritmo RSA... Purtroppo questo periodo sto studiando come un mulo e, complice lo stress, a ste cose non riesco a stargli appresso più di tanto. Potreste darmi una mano per favore?

    Il codice che segue non da errori in compilazione, funziona per un paio di elaborazioni e poi va in crash. Premetto che, eliminando l'ultima parte (quella del calcolo dell'esponente pubblico) il programma va in run senza problemi e non crasha. Mi è successo un paio di volte che crashasse anche al primo colpo, ma onestamente non ne capisco la ragione. Confido in voi

    Se vi può aiutare: ncas è una variabile per un numero random per l'assegnazione dei due numeri primi (np1, np2) da un vettore preconfezionato per lo scopo con 10 numeri primi. Pvt è l'esponente privato, pub quello pubblico.

    Codice PHP:
        Private Sub calcola_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles calcola.Click
            Dim ncas 
    As Single
            Dim np1
    np2 As Integer
            Dim vtprimi
    (09), moduloapp As Integer
            Dim pvt
    pub As Double

            vtprimi
    (00) = 113
            vtprimi
    (01) = 193
            vtprimi
    (02) = 251
            vtprimi
    (03) = 269
            vtprimi
    (04) = 311
            vtprimi
    (05) = 313
            vtprimi
    (06) = 337
            vtprimi
    (07) = 421
            vtprimi
    (08) = 433
            vtprimi
    (09) = 541

            Randomize
    ()
            
    ncas Rnd()
            
    Select Case Val(ncas)
                Case 
    0 To 0.099999999
                    np1 
    vtprimi(00)
                Case 
    0.1 To 0.199999999
                    np1 
    vtprimi(01)
                Case 
    0.2 To 0.299999999
                    np1 
    vtprimi(02)
                Case 
    0.3 To 0.399999999
                    np1 
    vtprimi(03)
                Case 
    0.4 To 0.499999999
                    np1 
    vtprimi(04)
                Case 
    0.5 To 0.599999999
                    np1 
    vtprimi(05)
                Case 
    0.6 To 0.699999999
                    np1 
    vtprimi(06)
                Case 
    0.7 To 0.799999999
                    np1 
    vtprimi(07)
                Case 
    0.8 To 0.899999999
                    np1 
    vtprimi(08)
                Case 
    0.9 To 1
                    np1 
    vtprimi(09)
            
    End Select
            form_np1
    .Text np1

            ncas 
    Rnd()
            
    Select Case Val(ncas)
                Case 
    0 To 0.099999999
                    np2 
    vtprimi(00)
                Case 
    0.1 To 0.199999999
                    np2 
    vtprimi(01)
                Case 
    0.2 To 0.299999999
                    np2 
    vtprimi(02)
                Case 
    0.3 To 0.399999999
                    np2 
    vtprimi(03)
                Case 
    0.4 To 0.499999999
                    np2 
    vtprimi(04)
                Case 
    0.5 To 0.599999999
                    np2 
    vtprimi(05)
                Case 
    0.6 To 0.699999999
                    np2 
    vtprimi(06)
                Case 
    0.7 To 0.799999999
                    np2 
    vtprimi(07)
                Case 
    0.8 To 0.899999999
                    np2 
    vtprimi(08)
                Case 
    0.9 To 1
                    np2 
    vtprimi(09)
            
    End Select
            form_np2
    .Text np2

            modulo 
    np1 np2
            form_modulo
    .Text modulo

            pvt 
    = (np1 1) * (np2 1)
            
    app pvt

            REM Calcolo esponente privato 
    (pvt), coprimo e più piccolo di (np1 1)(np2 1)
            Do While ((
    MCD(pvtmodulo) <> 1))
                
    pvt pvt 0.01
            Loop
            form_pvt
    .Text pvt

            REM Calcolo esponente pubblico 
    (pub), tale che (pvt pubmod (np1 1)(np2 1) = 1
            pub 
    0.1
            
    Do While (((pub pvtMod app) <> 1)
                
    pub pub 0.1
            Loop
            form_pub
    .Text pub
        End Sub 
    Grazie a tutti in anticipo per il vostro aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Che tipo di errore da scusa???
    Perchè dichiari un'array bidimensionale e poi ne usi solo una dimensione?
    Lo scopo della funzione Val(ncas) ??
    MCD cosa sarebbe?
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Allora iniziamo per gradi.
    All'inizio mi segnalava per più volte un errore di overflow nel calcolo dell'esponente pubblico. Ho smanettato un po' fino a riuscire a far partire il debug senza errori... Esegue il programma e dopo un paio di calcoli degli esponenti mi va in crash, senza specificare l'errore!
    Per l'array, credo che è perchè ho iniziato a scrivere il sorgente in vba (che non usa array ma parte dalle matrici, dovendo quindi specificare una dimensione a 0, salvo errori da parte mia e del mio orribile libro di testo) e non ho più corretto sta cosa. Ora provvedo :P
    Lo stesso credo valga per Val(ncas), mi pare andasse scritto così per il vba (e pare che anche in vb prenda tutto bene, ma se mi consigli di cambiare piazzo solo il nome della variabile).
    MCD è una funzione che per mancanza di tempo ho copiato-incollato da wikipedia, ma l'ho analizzata velocemente con un mio amico e sono sicuro funzioni.

    Nota che se levo la parte che calcola l'esponente pubblico il programma non crasha, per questo dico che sono sicuro che il problema sia lì, ma non capisco dove!! Ti ringrazio per il tempo che mi stai dedicando

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Esegue il programma e dopo un paio di calcoli degli esponenti mi va in crash, senza specificare l'errore!
    Scusa ma in fase di debug non può non segnalarti l'eccezione che si verifica anche se non è presente il blocco Try-Catch!

    L'eccezione di Overflow in quel caso potrebbe significare che hai assegnato a una variabile ,in quel caso alla variabile pub, un valore superiore al suo valore massimo. In quel caso puoi mettere:

    codice:
     If  pub >= Double.MaxValue Then Exit For
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Ok, ho provato ad inserire la stringa che mi hai indicato all'interno del ciclo (ho opportunamente cambiato For con Do)... e cosa veramente strana, SI IMPALLA LO STESSO! O___o Il debug ieri mi ha segnato per un paio di volte l'errore di overflow, ma al momento continua a non segnarmi assolutamente nulla.

  6. #6
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Se ci dai il sorgente cerchiamo di aiutarti.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa cassano, ma che senso fare questo invito in un post di giugno ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.