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.