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;
}
Hallo Savage,
vermeiden wohl nicht, aber du kannst natürlich anschließend eine (eindeutige) Ersetzung durch andere Zeichen bzw. Zeichensequenzen durchführen.
herbivore
naja, aber mit was soll ich die zeichen ersetzen? buchstaben und zahlen werden ja alle verwendet.
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
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.