Feedback

C# - Encrypt and Decrypt Strings

Veröffentlicht von am 18.08.2006
(11 Bewertungen)
This class encrypt and decrypt strings using the Rijndael algorithm .
using System;
using System.IO;
using System.Security.Cryptography;

/// <summary>
/// encrypt and decrypt strings
/// </summary>
public class Encryption
{
    /// <summary>
    /// Encrypts the string.
    /// </summary>
    /// <param name="clearText">The clear text.</param>
    /// <param name="Key">The key.</param>
    /// <param name="IV">The IV.</param>
    /// <returns></returns>
    private static byte[] EncryptString(byte[] clearText, byte[] Key, byte[] IV)
    {
        MemoryStream ms = new MemoryStream();
        Rijndael alg = Rijndael.Create();
        alg.Key = Key;
        alg.IV = IV;
        CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
        cs.Write(clearText, 0, clearText.Length);
        cs.Close();
        byte[] encryptedData = ms.ToArray();
        return encryptedData;
    }

    /// <summary>
    /// Encrypts the string.
    /// </summary>
    /// <param name="clearText">The clear text.</param>
    /// <param name="Password">The password.</param>
    /// <returns></returns>
    public static string EncryptString(string clearText, string Password)
    {
        byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        byte[] encryptedData = EncryptString(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
        return Convert.ToBase64String(encryptedData);
    }

    /// <summary>
    /// Decrypts the string.
    /// </summary>
    /// <param name="cipherData">The cipher data.</param>
    /// <param name="Key">The key.</param>
    /// <param name="IV">The IV.</param>
    /// <returns></returns>
    private static byte[] DecryptString(byte[] cipherData, byte[] Key, byte[] IV)
    {
        MemoryStream ms = new MemoryStream();
        Rijndael alg = Rijndael.Create();
        alg.Key = Key;
        alg.IV = IV;
        CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(cipherData, 0, cipherData.Length);
        cs.Close();
        byte[] decryptedData = ms.ToArray();
        return decryptedData;
    }

    /// <summary>
    /// Decrypts the string.
    /// </summary>
    /// <param name="cipherText">The cipher text.</param>
    /// <param name="Password">The password.</param>
    /// <returns></returns>
    public static string DecryptString(string cipherText, string Password)
    {
        byte[] cipherBytes = Convert.FromBase64String(cipherText);
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        byte[] decryptedData = DecryptString(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
        return System.Text.Encoding.Unicode.GetString(decryptedData);
    }
}

6 Kommentare zum Snippet

Rainbird schrieb am 04.11.2006:
Schade, dass das Snippet nicht Dokumentiert ist (Kein XML-Doku-Tags, keine Kommentare).
soxxing schrieb am 28.01.2008:
Danke, Vielen Dank
Genau sowas habe ich gesucht.
Leider keine Kommentare, naja man kann nich alles haben ;).
Jan Welker schrieb am 28.01.2008:
Ich habe XML Kommentare hinzugefügt.
thomas3577 schrieb am 16.12.2009:
Ich kenne mich mit dem Thema nicht so aus aber muss man für "cipherText" einfach irgend eine belibige Zeichenfolge wählen? Und muss bei "clearText" die gleiche Zeichenfolge stehen?
dariusarnold schrieb am 07.02.2013:
Hey, Ho..
Ich wüsste jetzt auch nicht wirklich was in den cipherText soll..
Kanns grad nicht ausprobiern weil ich grad nur mit dem Eier-Pad on bin..
Kann mir jemand weiterhelfen??
Vielleicht ja Herr Welker persönlich?! ;) ;)
dariusarnold schrieb am 08.02.2013:
Ups! Ist ja logisch..
Ich wollt's grad ausprobieren und hab mich gefragt, woher weiß die Methode eigentlich was sie Entschlüsseln soll..??
>>Cipher Text<< :D Naja.. kommt vor. Einfach auf dem Schlauch gestanden.
 

Logge dich ein, um hier zu kommentieren!