Doppio ciclo for c#

martedì 02 febbraio 2010 - 23.01

Triade Profilo | Newbie

ciao a tutti ragazzi!!!
sto cercando di creare un programma in c# il quale deve essere in grado di criptare una stringa:vi spiego brevemente.
Data una stringa io devo fare in modo di cambiare ogni singola lettera con la sua lettera successiva ( per esempio: tutte le lettere A devono cambiare in lettera B e così via ) per poter poi visualizzare in una text il testo criptato.
Purtroppo sono iniziati i problemi.
Vi posto le righe di codice appena scritte:

string msgGrezzo = txtMexIniziale.Text.ToString();
char[] separatore ={ ' ' };
Array arr = msgGrezzo.Split(separatore);
for (int i = 0; i < arr.Length; i++)
{
}


Ho creato una variabile separatore che sarà lo spazio in modo da separare ogni parola dall'altra;ora però non so come creare il secondo ciclo dentro al primo per poter scandire ogni lettera per poter modificarla...
Sapete aiutarmi????
Grazie 1000 in anticipo!!!ciao ciao

AntCiar Profilo | Expert

Ciao. Il metodo che voui usare tu per la sostituzione delle lettere dovrebbe prevedere una funzione in cui associ ad ogni lettera la sua successiva (in fase di cripting) e una funzione che faccia il contrario.

Per come la vedo io potresti fare in un altro modo. Ogni carattere corrisponde ad un certo 'numero'. potresti scorrere tutta la tua stringa, estrarre il numero associato al carattere ed aggiungerci +1 in fase di Cripting, mentre in fase di decripting applicherai -1.

Ti posto di seguito la funzione che puoi utilizzare per fare questo. La func restituisce una stringa quindi per chiamarla basta che usi this.textbox2.text = CriptString(this.textbox1.text, true);

La stessa funzione la usi anche per il Decript passando false come secondo parametro.

private string CriptString(string message, bool Cripting)
{
string res = "";
int charNumber = 0;
char[] component = message.ToCharArray();

foreach (char c in component)
{
charNumber = (int)c;
if (Cripting)
{
charNumber++;
}
else
{
charNumber--;
}
res = res + Char.ConvertFromUtf32(charNumber);
}

return res;
}
Cristian Barca

tonyexpo Profilo | Senior Member

Ciao

altrimenti usa un sistema di crittazione standard di .NET

'DES
Dim des As New Security.Cryptography.DESCryptoServiceProvider
'usare des.IV per impostare il vettore di inizializzazione: : ricorda di salvarti questo valore - il metodo più semplice è salvarsi il primo che genera lui in random
'usare des.Key per impostare la password: ricorda di salvarti questo valore - il metodo più semplice è salvarsi il primo che genera lui in random
Dim arr As Byte()

'crittazione
Using temp As New IO.MemoryStream
Using cs As New Security.Cryptography.CryptoStream(temp, des.CreateEncryptor, Security.Cryptography.CryptoStreamMode.Write)
Using w As New IO.StreamWriter(cs)
w.WriteLine("Testo da crittare!!")
End Using
End Using

'array di bytes contenente il testo crittato
arr = temp.ToArray 'es: A?5@???K??5xf\|?L??v

'base64 dell'array
Dim b64 As String = Convert.ToBase64String(arr) 'es: Qcg1QImTHttL8wjsNQR4ZgFcfLFM4dB2 - questo è il testo che mostrerai a video
End Using

'decrittazione
Using temp As New IO.MemoryStream(arr)
Using cs As New Security.Cryptography.CryptoStream(temp, des.CreateDecryptor, Security.Cryptography.CryptoStreamMode.Read)
Using r As New IO.StreamReader(cs)
'testo decrittato
Dim text As String = r.ReadLine 'es: Testo da crittare!!
End Using
End Using
End Using


ciao

Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

Triade Profilo | Newbie

Grazie 1000 a tutti per l'interessamento e per la risposta tempestiva!!!
Grazie a voi ho risolto il problema....
grazie davvero...ciao a tutti!!!

AntCiar Profilo | Expert

.....Come ripetuto più volte in altri thread.... se hai risolto il tuo problema non lasciare aperto il thread inutilmente. Altri utenti vedendo che non è concluso potrebbero aprirlo e iniziare a leggere la conversazione ed arrivare dopo N messaggi a leggere "grazie ho risolto"....
Cristian Barca

Triade Profilo | Newbie

fatto
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5