Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Verschlüsselung > Zeichen
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

Verschlüsselung > Zeichen

beantworten | zitieren | melden

Moin,

wenn sich ein Benutzer auf einem Webportal registriert, schicke ich ihm ein Email mit einem verschlüsselten Freischaltcode zum aktivieren seines Benutzers. Dadurch kann es passieren, das ein Link so aussieht: http://localhost/register.aspx?regok=VoXyErqjfqGvrW4SGwrVO8ukyu/pnTelDOO4i8JLWT==

Mein Problem ist, dass manche Email-Clients den Link ohne die beiden = am Ende generieren. Kann ich irgendwie umgehen, dass Zeichen wie = beim verschlüsseln verwendet werden?
Hier die Methode:


public static string Encrypt(string TextToBeEncrypted)
        {
            RijndaelManaged RijndaelCipher = new RijndaelManaged();
            string Password = "xxx";
            byte[] PlainText = System.Text.Encoding.Unicode.GetBytes(TextToBeEncrypted);
            byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());
            PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);
            //Creates a symmetric encryptor object. 
            ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
            MemoryStream memoryStream = new MemoryStream();
            //Defines a stream that links data streams to cryptographic transformations
            CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);
            cryptoStream.Write(PlainText, 0, PlainText.Length);
            //Writes the final state and clears the buffer
            cryptoStream.FlushFinalBlock();
            byte[] CipherBytes = memoryStream.ToArray();
            memoryStream.Close();
            cryptoStream.Close();
            string EncryptedData = Convert.ToBase64String(CipherBytes);

            return EncryptedData;
        }
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Savage,

vermeiden wohl nicht, aber du kannst natürlich anschließend eine (eindeutige) Ersetzung durch andere Zeichen bzw. Zeichensequenzen durchführen.

herbivore
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

naja, aber mit was soll ich die zeichen ersetzen? buchstaben und zahlen werden ja alle verwendet.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Savage,

es gibt ja nur max drei Zeichen, die du ersetzen musst: +, / und =. Du kannst + durch AB, / durch AC und = durch AD ersetzen. Natürlich musst du dann vorher alle As durch AA ersetzen.

herbivore
private Nachricht | Beiträge des Benutzers
fadass
myCSharp.de - Member



Dabei seit:
Beiträge: 102

beantworten | zitieren | melden

ich würde die ganz raushauen wenns net klappt
private Nachricht | Beiträge des Benutzers
Kartoffel
myCSharp.de - Member



Dabei seit:
Beiträge: 27

beantworten | zitieren | melden

Du kannst auch einfach jedes Zeichen durch zwei Hexadezimalziffern (gemäß des Ascii-Wertes o.Ä.) ersetzen. Dann ist eindeutige Umkehrung möglich. Der Code verdoppelt sich in der Länge.
private Nachricht | Beiträge des Benutzers