utilizo este código para cifrar una cadena (básicamente, este es el ejemplo dado en la Rijndael class on MSDN):codificación a usar para convertir Bytes arreglo a cadena y viceversa
public static String AESEncrypt(String str2Encrypt, Byte[] encryptionKey, Byte[] IV)
{
Byte[] encryptedText;
using (RijndaelManaged rijAlg = new RijndaelManaged())
{
// Use the provided key and IV
rijAlg.Key = encryptionKey;
rijAlg.IV = IV;
// Create a decrytor to perform the stream transform
ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
// Create the streams used for encryption
using (MemoryStream msEncrypt = new MemoryStream())
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
// Write all data to the stream
swEncrypt.Write(str2Encrypt);
}
encryptedText = msEncrypt.ToArray();
}
}
return Encoding.Default.GetString(encryptedText);
}
utilizo Encoding.Default
para convertir una matriz de bytes a una cadena, pero no estoy seguro de que sea una buena solución. Mi objetivo es almacenar texto encriptado (como contraseñas ...) en archivos. ¿Debo continuar con Encoding.Default
o usar Encoding.UTF8Encoding
o alguna otra cosa?
¿Puede tener consecuencias negativas en los valores almacenados cuando intento encriptarlos y descifrarlos si los archivos se mueven a diferentes sistemas operativos?
Gracias Jon. Me salva de errores serios. – Otiel
Véase también [Publicación de Phil Haack sobre este tema] (http://feeds.haacked.com/~r/haacked/~3/5hyXGYRO0Bo/hazards-of-converting-binary-data-to-a-string.aspx) –
También vea http://stackoverflow.com/questions/646974/is-there-a-standard-technique-for-packing-binary-data-into-a-utf-16-string –