Algoritmo de criptografia simples em c # .net

Eu estou tentando ler o texto do arquivo nad criptografá-lo e passá-lo para uma function no formato de seqüência de caracteres. Mais tarde, também quero descriptografá-lo.

Eu tentei o seguinte, mas ele não fez nenhuma criptografia. Alguém pode sugerir qualquer algoritmo de criptografia simples?

fileStream = store.OpenFile(strFilePath, FileMode.Open, FileAccess.Read); strEncryptedFileStream = Encoding.Unicode.GetBytes(fileStream.ToString()).ToString(); 

Use AES . Aqui está uma aula auxiliar para isso. Não faz sentido usar uma criptografia “simples” ou, em outras palavras, facilmente quebrada. Ou você quer que as pessoas consigam quebrá-lo ou não. Escolha um padrão de criptografia que seja bem conhecido e testado.

Você pode modificar o exemplo abaixo para suas necessidades, caso não as atenda.

 using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Diagnostics; namespace Common.Cryptography { ///  /// AES is a symmetric 256-bit encryption algorthm. /// Read more: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard ///  public static class AES { private const string _SALT = "g46dzQ80"; private const string _INITVECTOR = "OFRna74m*aze01xY"; private static byte[] _saltBytes; private static byte[] _initVectorBytes; static AES() { _saltBytes = Encoding.UTF8.GetBytes(_SALT); _initVectorBytes = Encoding.UTF8.GetBytes(_INITVECTOR); } ///  /// Encrypts a string with AES ///  /// Text to be encrypted /// Password to encrypt with /// Salt to encrypt with /// Needs to be 16 ASCII characters long /// An encrypted string public static string Encrypt(string plainText, string password, string salt = null, string initialVector = null) { return Convert.ToBase64String(EncryptToBytes(plainText, password, salt, initialVector)); } ///  /// Encrypts a string with AES ///  /// Text to be encrypted /// Password to encrypt with /// Salt to encrypt with /// Needs to be 16 ASCII characters long /// An encrypted string public static byte[] EncryptToBytes(string plainText, string password, string salt = null, string initialVector = null) { byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); return EncryptToBytes(plainTextBytes, password, salt, initialVector); } ///  /// Encrypts a string with AES ///  /// Bytes to be encrypted /// Password to encrypt with /// Salt to encrypt with /// Needs to be 16 ASCII characters long /// An encrypted string public static byte[] EncryptToBytes(byte[] plainTextBytes, string password, string salt = null, string initialVector = null) { int keySize = 256; byte[] initialVectorBytes = string.IsNullOrEmpty(initialVector) ? _initVectorBytes : Encoding.UTF8.GetBytes(initialVector); byte[] saltValueBytes = string.IsNullOrEmpty(salt) ? _saltBytes : Encoding.UTF8.GetBytes(salt); byte[] keyBytes = new Rfc2898DeriveBytes(password, saltValueBytes).GetBytes(keySize / 8); using (RijndaelManaged symmetricKey = new RijndaelManaged()) { symmetricKey.Mode = CipherMode.CBC; using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes)) { using (MemoryStream memStream = new MemoryStream()) { using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write)) { cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length); cryptoStream.FlushFinalBlock(); return memStream.ToArray(); } } } } } ///  /// Decrypts an AES-encrypted string. ///  /// Text to be decrypted /// Password to decrypt with /// Salt to decrypt with /// Needs to be 16 ASCII characters long /// A decrypted string public static string Decrypt(string cipherText, string password, string salt = null, string initialVector = null) { byte[] cipherTextBytes = Convert.FromBase64String(cipherText.Replace(' ','+')); return Decrypt(cipherTextBytes, password, salt, initialVector).TrimEnd('\0'); } ///  /// Decrypts an AES-encrypted string. ///  /// Text to be decrypted /// Password to decrypt with /// Salt to decrypt with /// Needs to be 16 ASCII characters long /// A decrypted string public static string Decrypt(byte[] cipherTextBytes, string password, string salt = null, string initialVector = null) { int keySize = 256; byte[] initialVectorBytes = string.IsNullOrEmpty(initialVector) ? _initVectorBytes : Encoding.UTF8.GetBytes(initialVector); byte[] saltValueBytes = string.IsNullOrEmpty(salt) ? _saltBytes : Encoding.UTF8.GetBytes(salt); byte[] keyBytes = new Rfc2898DeriveBytes(password, saltValueBytes).GetBytes(keySize / 8); byte[] plainTextBytes = new byte[cipherTextBytes.Length]; using (RijndaelManaged symmetricKey = new RijndaelManaged()) { symmetricKey.Mode = CipherMode.CBC; using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes)) { using (MemoryStream memStream = new MemoryStream(cipherTextBytes)) { using (CryptoStream cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read)) { int byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length); return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount); } } } } } } } 

Nada no seu código faz criptografia. Você está apenas convertendo para Unicode.

Você poderia dar uma olhada nesta questão que dá um bom exemplo de criptografia em c #.

O método Enconding diz respeito à codificação de texto (UTF-8, ANSI, etc …) você deve usar um algoritmo de criptografia, existem várias maneiras de fazer isso, um exemplo simples seria usando a criptografia XOR.

Veja isso:

 string XorEncryptDecryptText(string stringText, string stringKey){ // Variable that receives the result of processode encryption. string stringNewText = ""; // First we take the difference in size of the two strings. int diff = (stringText.Length - stringKey.Length); // If the size difference that we put stringKey with the same size as the XOR stringText that no errors occur. if (diff > 0){ // We calculate the rest and the amount of times we repeat the stringKey to equal sizes. int cont = (int)diff / stringKey.Length; int resto = diff % stringKey.Length; string stringKeyAux = stringKey; // At this point the stringText concatenate the stringKey to be equal sizes. for (int i = 0; i < cont; i++){ stringKeyAux += stringKey; } for (int i = 0; (i < resto); i++){ stringKeyAux += stringKey[i]; } stringKey = stringKeyAux; } // At this point piece of code is done the process of XOR. for (int i = 0; i < stringText.Length; i++){ int charValue = Convert.ToInt32(stringText[i]); int charKey = Convert.ToInt32(stringKey[i]); charValue ^= charKey; stringNewText += char.ConvertFromUtf32(charValue); } return stringNewText;} string XOREncriptDecriptFile(string FileName, string stringKey){ string stringAux = System.IO.File.ReadAllLines(FileName); return XorEncryptDecryptText(stringAux, stringKey);} 

Este código é baseado em http://julioborges.p.ht/?p=769 .

Para mais segurança use a resposta do smdrager