Jump to content
Guest

CipherGuru - a .NET string encoder/decoder

Recommended Posts

Posted (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:

 

  1. Reverse
  2. Hexadecimal
  3. Binary
  4. ASCII
  5. Base64
  6. Caesar
  7. MD5
  8. SHA
  9. RC4
  10. AES
  11. ROT13
  12. 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 by Guest
adaug github
Posted (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 by yoyois
Posted

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/

 

 

  • Upvote 1
Posted
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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...