Newsgroup: it.comp.lang.visual-basic
Titolo: Algoritmo per crittografare

Dove posso trovare un buon algoritmo per crittografare una stringa di 8
caratteri numerici in un codice anche più lungo?
Ovviamente ho bisogno poi che VB5 riesca decodificare per controllare
l'esattezza dei dati eseguendo un controllo fra la stringa normele e quella
crittografata.
Grazie per l'aiuto,
LuPo
luc...@libero.it

 wrote in message
PD9C3.230$qf3....@typhoon.libero.it...

Usa un po' di fantasia, non e' difficile fare buone routine x crittografare
/ decrittografare e poi se la fai tu di tua testa e' sicuramente + difficile
da decifrare di una che trovi in internet o di una che ti viene
suggerita.......
Ciao
Ven

 caratteri numerici in un codice anche più lungo?
L'HO FATTO IO !!!!!!
mandami un'email a 
van...@usa.net
 ....
L'algoritmo l'ho inventato partendo da zero e l'ho creato in Vb5 ( adesso
sono al VB6 :-)
--
_______________________________________
   Molteplici saluti
       (rigorosamente in contemporanea :-)
             MultiTaskinG
My Motorcycle WebSite: 
http://drive.to/vantax
    ICQ _&_PGP disponibili su richiesta :-)
_______________________________________

Ti faccio un esempio.
Potresti creare una stringa lunga il doppio di quella che hai tu (in questo
caso 16 caratteri).
Così hai 8 coppie di caratteri per ogni carattere della stringa originale.
Ecco, puoi fare in modo che nelle coppie dispari (la prima, la terza, la
quinta, la settima) il carattere criptato sia il primo dei due.
Nelle coppie pari (seconda, quarta, sesta, ottava) puoi fare in modo che il
carattere criptato sia il secondo dei due.
(per criptare i caratteri, puoi sostituire al carattere originale un altro
carattere)
Es:
stringa originale -> ABCDEFGH
te fai in modo che la A sia sostituita con la Y (if
mid$(stringa$,inizio,1)="A" then ....), la B con la F, la C con la S, la D
con la Z, la E con la L, la F con la R, la G con la A, la H con la T.
Gli altri caratteri delle coppie li fai venir fuori a caso (usa rnd).
Avrai
YKHFSRJZLPURAXJT
Hai le 8 coppie
YK HF SR JZ LP UR AX JT
In quelle pari il carattere significativo è il secondo, in quelle dispari è
il primo
Per confondere ulteriormente le idee, puoi aggiungere un carattere casuale
in fondo alla stringa, così uno può non arrivare a capire il discorso delle
coppie.
Avrai, quindi:
YKHFSRJZLPURAXJTB
Ti faccio un esempio di codice di criptazione:
a$="ABCDEFGH"
b$=""
agg$
for t=1 to len(a$)
 lettera$=mid$(a$,t,1)
 select case lettera$
           case "A"
                  agg$="Y"
           case "B"
                  agg$="F"
                .......... 'devi fare tutto l'alfabeto
                ..........
 end select
 x=Int((90- 65+ 1) * Rnd + 65) 'Lettere dalla A maiuscola alla Z maiuscola
 if int(t/2)<>t/2 then
                            b$ = b$ & agg$ & chr$(x) 't è dispari
                      else
                            b$ = b$ & chr$(x) & agg$ 't è pari
 end if
next t
'Aggiunta ultimo carattere
x=Int((90- 65+ 1) * Rnd + 65)
b$=b$ & chr$(x) 'è la stringa criptata
Per la decriptazione, usa:
conta=0
c$=""
for t=1 to len(b$)-1 step 2
 conta=conta+1
 coppia$=mid$(b$,t,2) 'legge la coppia
 'Sceglie quale dei due caratteri della coppia decriptare
 if int(conta/2)<>conta/2 then
                                          decr$=mid$(coppia$,1,1)
                                    else
                                          decr$=mid$(coppia$,2,1)
 endif
 'Da qui in poi fai la decriptazione col select case però inverito
 select case decr$
            case "Y"
                 c$=c$ & "A"
              ..........
              ..........
  ens select
next t
c$ sarà la stringa originale.
Questo è solo un metodo pensato lì per lì! E' possibile che ci siano degli
errori ne codice.
Ciao

 sono al VB6 :-)
anzi...
se hai non hai VB6 installato scaricati questo file:
space.tin.it/io/lvantag/MTG_Setup.exe
se invece hai VB6 installato ti basta scaricare questi 36 Kb
space.tin.it/io/lvantag/mtg81b.zip
Consigli e suggerimenti sono ben accetti...
--
_______________________________________
   Molteplici saluti
       (rigorosamente in contemporanea :-)
             MultiTaskinG
    ICQ _&_PGP disponibili su richiesta :-)
_______________________________________

Sorry... link errato: (questo dovrebbe essere esatto :-)
se hai non hai VB6 installato scaricati questo file:
space.tin.it/io/lvantagg/MTG_Setup.exe
se invece hai VB6 installato ti basta scaricare questi 36 Kb
space.tin.it/io/lvantagg/mtg81b.zip

 
luc...@libero.it
--
By matteo(olè)
Mail to: 
ori...@libero.it
 
vuoiunscinquant...@yahoo.it

criptare)
Giusto. Un accorgimento è anche quello di inserire nella matrice il
carattere SPAZIO, in modo che la frase criptata compaia senza spazi.
Infatti, se cripti un qualcosa del genere:
"o a me, o a te"
è facile scoprire che il 1°,3°,9°,11°carattere è una vocale.

questo è vero, non ci avevo pensato........
Inoltre si possono effettuare criptaizioni doppie (con una chiavi differenti)
e/o usare metodi combinati (prima uno poi un altro).
Accorgimenti utili sono cambiare frequentemente le chiavi di codifica, usare
chiavi lunghe, non inserire (anche se nascosta con codifiche) la/e chiavi
usate per criptare i messaggi (Microsoft Access usa un criterio del genere
per memorizzarsi la password del database e vi assicuro che ricavarla è una
vera stupidata........ quindi occhio).
Gian Luca Dei ha scritto:



Ed infine, tanto per confondere un po' le idee all'hacker, si "rigira" la
stringa criptata:
"AXZT"  --->   "TZXA"
Matteo, io e te dobbiamo aprire la:
DeiMat s.r.l.
Impresa di creazione algoritmi di criptazione
:))))

 Ed infine, tanto per confondere un po' le idee all'hacker, si "rigira" la



 wrote in message
37E3A0F4...@libero.it...
....... l'unica cosa che ancora non ho capito è xè dicono che un buon
algoritmo di criptazione sfrutti i numeri primi molto grandi, ne sai
qualcosa?
------------------------------------------------------
Premessa: i metodi di criptazione suggeriti nei giorni scorsi sul newsgroup
vanno benissimo per scoraggiare gli hacker che non siano seriamente
preparati nel campo della criptanalisi.
Quando è necessario un algoritmo "serio" (leggi quando dalla sicurezza delle
informazioni dipende una parte rilevante di un business di un tuo cliente),
tutte le invenzioni finora riportate sono poco più che dei giochetti e non
ci si può fare molto affidamento.
Se hai bisogno di un elevato grado di sicurezza ti consiglio di guardare i
molti algoritmi liberamente utilizzabili (
p.es
. Blowfish) per cifratura
simmetrica oppure l'RSA per un sistema a doppia chiave (pubblica/privata).
La criptanalisi è, per così dire, l'altra faccia della medaglia della
crittografia ed è la scienza che si occupa di rompere protocolli, sistemi di
cifratura ecc.
E' oggi lo strumento più importante per testare la validità di un sistema
crittografico e per correggerne le eventuali debolezze.
Tutti gli strumenti crittografici oggi più importanti sono resi pubblici
proprio allo scopo di testarne la validità, tanto che molti sistemi sono
oggetto di attacco da anni e quanto più rersistono, tanto più vengono
ritenuti sicuri.
Uno dei fondamenti della crittografia è infatti che un sistema crittografico
NON deve basare la sua efficacia sulla segretezza dell'algoritmo utilizzato
perchè altrimenti, appena qualcuno (per qualunque motivo) ne viene in
possesso, tutta la sicurezza risulta compromessa.
Per quanto riguarda l'importanza dei numeri primi essa deriva dal problema
della fattorializzazione (penso si dica così) che è alla base di alcuni
sistemi moderni (e non!) di criptazione a doppia chiave (pubblica/privata).
I sistemi di criptazione pubblica si basano tutti su un cosiddetto
"problema" matematico di difficile soluzione, ovvero su un meccanismo la cui
rottura, non conoscendo alcuni dati, viene ritenuta molto difficile; quando
invece questi dati sono noti, la cifratura/decifratura può avvenire con
relativa facilità.
Uno dei problemi la cui difficoltà di soluzione viene ritenuta fino ad oggi
enorme è quello di ricavare da un numero (composto da un numero di cifre
molto elevato) i fattori, ovvero i numeri primi, che lo compongono e che
moltiplicati tra di loro danno il numero di partenza.
Molti sistemi di cifratura pubblici si basano proprio sul fatto che
moltiplicare tra di loro due o più numeri primi è molto facile, mentre
ricavare gli stessi avendo il numero che è il loro prodotto, richiede una
potenza computazionale enormemente più elevata.
Così 
p.es
. il sistema di cifratura RSA (uno dei più quotati) ricava una
chiave pubblica ed una privata con operazioni matematiche eseguite su un
"modulo" che è il prodotto di due numeri primi molto grandi.
Nonostante il sistema per produrre le chiavi sia completamente noto, la
rottura del meccanismo è molto difficile perchè nessuno conosce i numeri
primi utilizzati per produrre le chiavi dopo che queste sono state prodotte.
Ovviamente l'unica difficoltà di chi usa l'algoritmo per criptare i dati è
quella di individuare i due numeri primi per produrre il modulo dal quale
ricavare le chiavi; come forse saprai la ricerca e l'individuazione dei
numeri primi è uno dei problemi matematici più dibattuti, tanto che spesso,
per risparmiare tempo nell'elaborazione delle chiavi, si utilizza un
algoritmo che genera numeri che hanno una probabilità molto elevata di
essere numeri primi ma senza averne la certezza.
Spero che il tutto sia sufficientemente comprensibile e che risponda alla
tua domanda.
Per ulteriori approfondimenti ti consiglio le FAQ sulla crittografia
disponibili sul sito RSA (
www.rsasecurity.com
).
Ciao,
   <--< Nik >-->

Pietralunga....te la sai lunga!!!!
Complimenti per la spiegazione.
Vuoi entrare a lavorare nella DeiMat?
:)

 Vuoi entrare a lavorare nella DeiMat?
:-)
PieDeiMat?
Ciao,
   <--< Nik >-->

>PieDeiMat?
33% 33% 33% ?
OK

 OK
e l'1% che avanza in beneficenza!!!!


e l'1% che avanza in beneficenza!!!!
OK, affare fatto!