Archief - C# Encrypt en Decrypt.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

jimowns

Legacy Member
Hey,

ik probeer een encrypt en decrypt aan het maken.
maar in mijn decrypt heb ik wat probleempjes.

als ik in mijn encrypt typ bevoorbeeld: hallo
zet hij die ook om, maar voor het terug te decrypte naar de juiste waarde loopt het mis.

Encrypt.
Code:
        public static string Encrypter(string num)
        {
            string Encrypt = "";
            foreach (char i in num)
            {
                int a = ((int)i ^ 101);
                Encrypt += a.ToString("X");
            }
            return Encrypt;
        }

Decrypt.
Code:
        public static string Decrypter(string Encrypt)
        {
            string Decrypt = "";
            string str = "";
            if ((Encrypt.Length % 2) != 0)
                return "";
            for (int i = 0; i < Encrypt.Length; i++)
            {
                int UCHAR = Int32.Parse(str, NumberStyles.HexNumber);
                Decrypt += (char)(UCHAR ^ 101);
            }
            return Decrypt;
        }

Ik hoop dat jullie mij kunnen helpen.
want ben er een knoeiboeltje van aan het maken van de Decrypter.


Mvg.

nameless

Legacy Member
Wil je het effectief zelf gaan gebruiken? Want dan kan je beter gebruik maken van bestaande libs.

Fraggie

Legacy Member
Veel zie ik er ook niet in, dat valt meer onder coderen dan encryptie.

Ook vindt ik het geen goede aanpak, beter een klasse maken die één datatype vast houd en enkel naar buiten komt met string indien je ze wil afdrukken. Alla een klok maken die intern enkel met seconden werkt, en indien nodig reken je de minuten, uren, dagen.. uit.

Een fix voor je code, hoewel het zeer omslachtig is:
Code:
public static string Encrypter(string num)
{
   StringBuilder sb = new StringBuilder();
   foreach (char i in num)
   {
      int a = ((int)i ^ 101);
      sb.Append(a.ToString("X"));
   }
   return sb.ToString();
}
-------
public static string Decrypter(string Encrypt)
{
   StringBuilder sb = new StringBuilder();
   foreach (char ch in Encrypt)
   {
      int UCHAR = int.Parse(Convert.ToString(ch), NumberStyles.HexNumber);
      sb.Append((char)(UCHAR ^ 101));
   }
   return sb.ToString();
}
Ik heb met een StringBuilder gewerkt ipv telkens nieuwe strings aanmaken. Maar zoals je kan zien
char -> string -> int -> char -> string
is zéér omslachtig.

Waarom:
Code:
if ((Encrypt.Length % 2) != 0)
    return "";
dit er stond is me onduidelijk, dus heb ik ze er uit gelaten.

jimowns

Legacy Member
@nameless
Dit wil ik eigenlijk zelf gaan gebruiken.

@Fraggie
ik probeer een Encreptie te maken voor mijn Database.

Ben eigenlijk bezig met een projectje met een login en register.
Bij registratie word het passwoord word omgezet in encryptie.
en als je wilt inloggen dat hij de passwoord in encryptie terug word decrypt.
Als voorbeeldje.
Als je registreerd met paswoord: hey
word het omgezet en zet bij de database als paswoord: D1C.

en als je wilt inloggen dan typ ik in mijn texbox: hey
en dan leest hij de passwoord dat Encrypted is in database.

Fraggie

Legacy Member
jimowns zei:
@nameless
Dit wil ik eigenlijk zelf gaan gebruiken.

@Fraggie
ik probeer een Encreptie te maken voor mijn Database.

Ben eigenlijk bezig met een projectje met een login en register.
Bij registratie word het passwoord word omgezet in encryptie.
en als je wilt inloggen dat hij de passwoord in encryptie terug word decrypt.
Als voorbeeldje.
Als je registreerd met paswoord: hey
word het omgezet en zet bij de database als paswoord: D1C.

en als je wilt inloggen dan typ ik in mijn texbox: hey
en dan leest hij de passwoord dat Encrypted is in database.
Nu moet je jezelf de vraag stellen of dit wel echt nodig is. Want indien iemand toegang krijgt tot jou server en alle data download, dan heeft hij alle tijd van de wereld om alle wachtwoorden terug te ontcijferen. Jij mag dan nog de encodeer generator aanpassen, vele users gebruiken het zelfde wachtwoord op vele sites.

Dus door zelf een systeem te schrijven beng je je eigen users in gevaar. Beter voor zo'n systeem is om een "cryptographic hash function" te gebruiken zoals MD5/SHA-1/.. Dat zijn functies die zogezegd enkel in één richting werken.

Je zet bv de tekst: hallo om in 598d4c200461b81522a3328565c25f7c met MD5 of fd4cef7a4e607f1fcc920ad6329a6df2df99a4e8 met SHA-1. Er bestaat geen DeMD5(598d4c200461b81522a3328565c25f7c) om terug hallo er uit te halen, men kan enkel via raden een van de originele input achterhalen.

Wat jij dan enkel nog hoeft te doen:
- Vraag username + pwd
- haal uit de database het de SHA-1 wachtwoord van die username (uniek)
- en vergelijk het met zijn de hash van zijn pwd

bv login fail:
user geeft hello op als wachtwoord terwijl het hallo moest zijn
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d =/= fd4cef7a4e607f1fcc920ad6329a6df2df99a4e8
(merk op, één letter verschil en toch een compleet andere hash!)

jimowns

Legacy Member
Je hebt wel gelijk fraggie.
ik kan het best met md5 doen.

Moest de gebruiker zijn passwoord zijn vergeten, dan kan ik altijd een persoonlijke vraag en antwoord laten invullen zoals bij de registratie, en als dat overeenstemt, dat hij dan zijn paswoord kan veranderen ;).

Dankuwel ;)

Messias.

Legacy Member
Gebruik a.u.b. SHA-256. Cryptoanalyse voor MD5 is zo ver gevorderd dat het gebruik ervan niet meer als veilig wordt beschouwd.

Waag jezelf ook nooit aan het schrijven van eigen cryptografische functies voor serieuze doeleinden, tenzij je natuurlijk een computerwetenschapper of wiskundige bent met een doctoraat in cryptografie. Ik garandeer u: ge zult falen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan