Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 15:37 Der er 14 kommentarer og
1 løsning

Kryptering med AES!

Hej jeg har følgende spørgsmål, jeg har noget som jeg gerne vil have krypteret og dekrypteret igen, men jeg får en fejl ud fra den kode som er fundet på codeproject.com

9VOMae3BptSi/KUzMH/4Dg==    Denne linje kan ikke dekrypteres

Har prøvet med forskellige andre, menjeg kan ikke se hvad forskellen er på denne og nogle af mine andre strengen, jeg sender koden til dekryptering og kryptering__


        private static string EncryptText(string clearText, string Password)
        {
            byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);

            //Dan nøgle og initialiseringsvektor ud fra medsendte password
            PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
                new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d,
                              0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});

            // Åben memorystream
            MemoryStream ms = new MemoryStream();

            // Dan symmetrisk algoritme og sæt key og initialiseringsvektor
            Rijndael alg = Rijndael.Create();
            alg.Key = pdb.GetBytes(32);
            alg.IV = pdb.GetBytes(16);

            // Dan krypteret stream via memorystream
            CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(clearBytes, 0, clearBytes.Length);
            cs.Close();

            // Hent of returner den krypterede data fra memorystream
            byte[] encryptedData = ms.ToArray();
            return Convert.ToBase64String(encryptedData);
        }


        private static string DecryptText(string cipherText, string Password)
        {
            if (cipherText.Length == 0)
                return "";
            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});
            MemoryStream ms = new MemoryStream();
            Rijndael alg = Rijndael.Create();
            alg.Key = pdb.GetBytes(32);
            alg.IV = pdb.GetBytes(16);

            CryptoStream cs = new CryptoStream(ms,
                alg.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(cipherBytes, 0, cipherBytes.Length);
            cs.Close();
            byte[] decryptedData = ms.ToArray();
            return System.Text.Encoding.Unicode.GetString(decryptedData);
        }
Avatar billede arne_v Ekspert
16. maj 2005 - 15:40 #1
hvilken fejl får du ?

(jeg har et AES eksempel som virke)
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 15:44 #2
Fejlen ligger i disse linjer, jeg får følgende exception

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});

String reference not set to an instance of a String.\r\nParameter name: s
Avatar billede arne_v Ekspert
16. maj 2005 - 15:47 #3
er Password forskellig fra null ?
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 15:52 #4
Nu får jeg en anden fejl, når jeg husker at sende et password med

strengen ser således ud, 9VOMae3BptSi/KUzMH/4Dg==\0
Password er: zerxjyspjdzojmzmxzjacjxznvxqeqcunmocwnmthmipqwjaxlauhwfpgsknablt

Min exception ligger på linjen:
byte[] cipherBytes = Convert.FromBase64String(cipherText);

Gir :            Invalid character in a Base-64 string.
Avatar billede arne_v Ekspert
16. maj 2005 - 15:55 #5
fjern den \0 terminering
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:23 #6
Det er hermed gjort, fejlen rykker sig længere og længere ned i koden

cs.Close();
      Padding is invalid and can not be removed.
Avatar billede arne_v Ekspert
16. maj 2005 - 16:29 #7
se den kan jeg så ikke lige gennemskue

er du sikker på at du kalder med det input som er output fra encrypt ?
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:39 #8
jeg prøver lige nogle ting, vender tilbage senere
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:43 #9
jeg kan simpelthen ikke forstår hvorfor den fejler der, når den skal lukke for streamen
Avatar billede arne_v Ekspert
16. maj 2005 - 16:47 #10
hvorfor bruger du iøvrigt stream ?

det er jo ikke nødvendigt til så små datamængder !
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:47 #11
nu tror jeg at jeg fandt den, så send du bare et svar, du skal have dine point for at have hjulpet mig på vej
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:48 #12
jeg skal kryptere filer også, så mængden bliver størrer og størrer
Avatar billede arne_v Ekspert
16. maj 2005 - 16:49 #13
ok
Avatar billede testpilot_dk Nybegynder
16. maj 2005 - 16:52 #14
Et lille tillægsspørgsmål, hvordan får jeg fat i ip adressen uden port nummer.

Jeg har følgende client.Sock.RemoteEndPoint.ToString() så får jeg ip og port,


Jeg vil gerne undgå porten!
Avatar billede arne_v Ekspert
16. maj 2005 - 16:56 #15
Prøv:

((IPEndPoint)client.Sock.RemoteEndPoint).Address

ikke så pænt men ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester