497 messaggi dal 08 febbraio 2009
Buon giorno

Devo passare dei dati criptati da Linux (mediante openssl) a Windows e viceversa.

Su Linux sono riuscito ad impostare il comando per criptare e decriptare una stringa.

Lato Windows sono riuscito a decriptare la stringa creata da Linux ma non riesco a criptarla.

Faccio un esempio.

Linux cripta la stringa "pippo" (senza doppi apici) in "uvEJch/9NHEplB+IfsFCTg==" (sempre senza doppi apici).

Se prendo la stringa criptata e la passo a questo metodo, ottengo "pippo" (per cui passare dal testo criptato a quello non criptato riesce).

Se però provo a criptare la stringa "pippo" ne ottengo una che non c'entra nulla.


Dove sto sbagliando?

Questo è il codice della mi app di prova (facendo il copia/incolla in una console application dovrebbe partire e vedrete che la stringa generata dal metodo di cripting è diversa da quello di decript)



    class Program
    {
        static void Main(string[] args)
        {
            string crypted = CryptAES("pippo");
            string decrypted = DecryptAES("uvEJch/9NHEplB+IfsFCTg==");
            Console.WriteLine("Cryptata: " + crypted);
            Console.WriteLine("Decryptata: " + decrypted);
            Console.ReadLine();
        }



        public static string DecryptAES(string cipherData)
        {
            try
            {
                using (var rijndaelManaged =
                       new RijndaelManaged { Key = cryptkey, IV = initVector, Mode = CipherMode.CBC })
                using (var memoryStream =
                       new MemoryStream(Convert.FromBase64String(cipherData)))
                using (var cryptoStream =
                       new CryptoStream(memoryStream,
                           rijndaelManaged.CreateDecryptor(cryptkey, initVector),
                           CryptoStreamMode.Read))
                {
                    return new StreamReader(cryptoStream).ReadToEnd();
                }
            }
            catch (CryptographicException e)
            {
                Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
                return null;
            }
        }


        public static string CryptAES(string textToCrypt)
        {
            try
            {
                using (var rijndaelManaged =
                       new RijndaelManaged { Key = cryptkey, IV = initVector, Mode = CipherMode.CBC })
                using (var memoryStream = new MemoryStream())
                using (var cryptoStream =
                       new CryptoStream(memoryStream,
                           rijndaelManaged.CreateEncryptor(cryptkey, initVector),
                           CryptoStreamMode.Write))
                {
                    using (var ws = new StreamWriter(cryptoStream))
                    {
                        ws.Write(textToCrypt);
                    }
                    return Convert.ToBase64String(memoryStream.ToArray());
                }
            }
            catch (CryptographicException e)
            {
                Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
                return null;
            }
        }


        private static byte[] cryptkey = Encoding.ASCII.GetBytes("1njanrhdkCnsahrebfdMvbjo32hqnd31");
        private static byte[] initVector = Encoding.ASCII.GetBytes("jsKidmshatyb4jdu");

    }


11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
penso che il risultato sia differente perché su windows stai cifrando "pippo", mentre su linux stai cifrando "pippo\n". (nota il carattere newline in fondo).

Vedi questo esempio:
https://dotnetfiddle.net/vNiAXs

Forse lo script che hai preparato su linux prende come input anche l'invio che dai per far partire l'esecuzione. Può essere? In tal caso rimuovi il newline dalla variabile in questo modo:
http://stackoverflow.com/questions/19345872/dirty-variable-remove-carriage-return#answer-19345966

ciao,
Moreno
Modificato da BrightSoul il 20 settembre 2014 14.09 -

Enjoy learning and just keep making
497 messaggi dal 08 febbraio 2009
Grazie mille!
Non avevo fatto caso che ci fosse un invio nella parte finale della stringa decriptata!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.