Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- using System.Threading.Tasks;
- namespace KoCoS.Chat.Cryptography
- {
- /// <summary> Ver- und Entschlüsselt strings </summary>
- public class Crypter
- {
- /// <summary> Verschlüsselt einen string (symmetrische Verschlüsselung) </summary>
- /// <param name="clearText">Klartext</param>
- /// <param name="Key">Schlüssel</param>
- /// <param name="IV">Initialisierungsvektor</param>
- /// <returns>verschlüsselter String</returns>
- private static byte[] EncryptSymmetricalString(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> Verschlüsselt einen string (symmetrische Verschlüsselung) </summary>
- /// <param name="clearText">Klartext</param>
- /// <param name="password">Passwort (Schlüssel zum Verschlüsseln)</param>
- /// <returns>verschlüsselter String</returns>
- public static string EncryptSymmetricalString(string clearText, string password)
- {
- byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
- byte[] encryptedData = EncryptSymmetricalBytes(clearBytes, password);
- return Convert.ToBase64String(encryptedData);
- }
- public static byte[] EncryptSymmetricalBytes(byte[] rawBytes, string password)
- {
- PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
- return EncryptSymmetricalString(rawBytes, pdb.GetBytes(32), pdb.GetBytes(16));
- }
- /// <summary> Entschlüsselt einen string (symmetrische Verschlüsselung) </summary>
- /// <param name="cipherData">verschlüsselte Daten</param>
- /// <param name="Key">Schlüssel der zum Verschlüsseln benutzt wurde</param>
- /// <param name="IV">benutzter Initialisierungsvektor</param>
- /// <returns>entschlüsselter string</returns>
- private static byte[] DecryptSymmetricalString(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> Entschlüssekt einen string (symmetrische Verschlüsselung) </summary>
- /// <param name="cipherText">verschlüsselter Text</param>
- /// <param name="Password">Passwort welches zum Verschlüsseln benutzt wurde</param>
- /// <returns>entschlüsselter string</returns>
- public static string DecryptSymmetricalString(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 = DecryptSymmetricalString(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
- return System.Text.Encoding.Unicode.GetString(decryptedData);
- }
- public static byte[] DecryptSymmetricalBytes(byte[] rawBytes, string password) {
- PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
- return DecryptSymmetricalString(rawBytes, pdb.GetBytes(32), pdb.GetBytes(16));
- }
- public static byte[] EncryptAsymmetricalBytes(byte[] byteToCrypt, int byteLength, byte[] key, byte[] iv)
- {
- AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider();
- aesCryptoServiceProvider.Key = key;
- aesCryptoServiceProvider.IV = iv;
- var encryptor = aesCryptoServiceProvider.CreateEncryptor();
- return encryptor.TransformFinalBlock(byteToCrypt, 0, byteLength);
- }
- public static byte[] DecryptAsymmetricalBytes(byte[] byteToDecrypt, int byteLength, byte[] key, byte[] iv)
- {
- AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider();
- aesCryptoServiceProvider.Key = key;
- aesCryptoServiceProvider.IV = iv;
- var decryptor = aesCryptoServiceProvider.CreateDecryptor();
- return decryptor.TransformFinalBlock(byteToDecrypt, 0, byteLength);
- }
- public static string GetMD5Hash(string input) {
- var md5 = MD5.Create();
- var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
- return Convert.ToBase64String(hash);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement