Guest Posted June 24, 2017 Report Posted June 24, 2017 (edited) Salut, Am vrut sa lucrez ceva in .NET si fiind inspirat de encoderul de pe Crypo.com si de toolul lui Gecko am decis sa scriu aceasta aplicatie. E simplu de folosit si isi face treaba... Suporta urmatorii algoritmi: Reverse Hexadecimal Binary ASCII Base64 Caesar MD5 SHA RC4 AES ROT13 ATOM128 Aici aveti un screenshot cu aplicatia: http://i.imgur.com/XgxdTTL.png Download de pe site-ul meu: http://adrenalinetech.xyz/downloads/CipherGuru/ Sursa pe github: https://github.com/adrenalinetech/CipherGuru Daca aveti nemultumiri sau vreti sa adaug un algoritm va rog sa imi spuneti. Multumesc. Edited June 25, 2017 by Guest adaug github Quote
Guest Posted June 25, 2017 Report Posted June 25, 2017 (edited) 7 hours ago, Maximus said: Si sursa ? M-am gandit si la asta o sa postez si sursa foarte curand. @Maximus sursa pe github: https://github.com/adrenalinetech/CipherGuru Edited June 25, 2017 by Guest Quote
yoyois Posted June 25, 2017 Report Posted June 25, 2017 (edited) Adauga un RNG ("true"). (numere si stringuri) Adauga RSA key generator, (fie el si cu openssl) Ai putea sa bagi tot procesul RSA encrypt-decrypt-sign-checksignature. Nu prea am vazut programe pentru criptare asimetetrica si cred ca ar fi misto sa o foloseasca lumea mai des. Edited June 25, 2017 by yoyois Quote
Erase Posted June 26, 2017 Report Posted June 26, 2017 Ok, la o privire am observat o sumedenie de probleme; voi enumera cateva: Nici o variabila indiferent de tipul de date nu ar trebui instantiata null. Cand e vorba de referinte ele sunt deja null iar tipurile de valori vor fi instantiate cu valorile default. ex: val type: int number; - variabila va fi 0 ref type: string val; - va fi null nu e nevoie de defaut(string) sau sa o declari tu asa; Interfata trebuie initializata cu clasa pe care o implementeaza sau, se poate declara urmand sa fie initializata ulterior. ex: ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes); In .net orice clasa care deriva din stream, implementeaza interfata IDisposable, apelarea metodelor close/dispose va reflecta si in clasa derivata; prin urmare nu trebuie sa apelezi stream.Close() Avand in vedere ca erorile astea le-am gasit intr-o singura metoda dintr-o clasa cred ca ar fi util sa citesti mai multe despre .net in cazul in care te intereseaza domeniul asta. Ar mai fi fost de discutat despre mai multe aspecte cum ar fi error checking, patterns, memory allocation, code reuse. Si pentru ca nu-mi place sa critic fara sa dau argumente voi lasa un exemplu cam cum ar fi trebuit sa arate metoda la care fac referire (probabil tot codul e varza, dar ma voi limita la ce am vazut): using (var symKey = new RijndaelManaged()) { var ms = new MemoryStream(); try { symKey.Mode = CipherMode.CBC; ICryptoTransform cryptor = symKey.CreateEncryptor(keyBytes, initVectorBytes); using (var cs = new CryptoStream(ms, cryptor, CryptoStreamMode.Write)) { cs.Write(plainTextBytes, 0, plainTextBytes.Length); cs.FlushFinalBlock(); } return Convert.ToBase64String(ms.ToArray()); } catch (CryptographicException ex) { throw ex; } catch (Exception ex) { throw ex; } } In orice caz initiativa e de laudad, continua. Pentru inceput poti incepe de aici: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/ 1 Quote
Guest Posted June 26, 2017 Report Posted June 26, 2017 7 hours ago, Erase said: Ok, la o privire am observat o sumedenie de probleme; voi enumera cateva: Nici o variabila indiferent de tipul de date nu ar trebui instantiata null. Cand e vorba de referinte ele sunt deja null iar tipurile de valori vor fi instantiate cu valorile default. ex: val type: int number; - variabila va fi 0 ref type: string val; - va fi null nu e nevoie de defaut(string) sau sa o declari tu asa; Interfata trebuie initializata cu clasa pe care o implementeaza sau, se poate declara urmand sa fie initializata ulterior. ex: ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes); In .net orice clasa care deriva din stream, implementeaza interfata IDisposable, apelarea metodelor close/dispose va reflecta si in clasa derivata; prin urmare nu trebuie sa apelezi stream.Close() Avand in vedere ca erorile astea le-am gasit intr-o singura metoda dintr-o clasa cred ca ar fi util sa citesti mai multe despre .net in cazul in care te intereseaza domeniul asta. Ar mai fi fost de discutat despre mai multe aspecte cum ar fi error checking, patterns, memory allocation, code reuse. Si pentru ca nu-mi place sa critic fara sa dau argumente voi lasa un exemplu cam cum ar fi trebuit sa arate metoda la care fac referire (probabil tot codul e varza, dar ma voi limita la ce am vazut): using (var symKey = new RijndaelManaged()) { var ms = new MemoryStream(); try { symKey.Mode = CipherMode.CBC; ICryptoTransform cryptor = symKey.CreateEncryptor(keyBytes, initVectorBytes); using (var cs = new CryptoStream(ms, cryptor, CryptoStreamMode.Write)) { cs.Write(plainTextBytes, 0, plainTextBytes.Length); cs.FlushFinalBlock(); } return Convert.ToBase64String(ms.ToArray()); } catch (CryptographicException ex) { throw ex; } catch (Exception ex) { throw ex; } } In orice caz initiativa e de laudad, continua. Pentru inceput poti incepe de aici: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/ Sunt la inceput, nu am zis ca sunt vreun smecher sau ceva. Cat despre ce sfaturi mi-ai dat iti multumesc. Am sa rezolv problemele de care mi-ai spus si o sa mai adaug ceva, cat de curand. Quote