Avatar billede jacknet Nybegynder
18. april 2006 - 23:19 Der er 6 kommentarer og
1 løsning

Specified key is not a valid size for this algorithm

Hey,

Sidder og roder med noget kryptering, men jeg får en Exception når jeg forsøger at kryptere noget.

"Specified key is not a valid size for this algorithm" - ja, det siger jo det hele, men hvordan får jeg nøglen til at være en gyldig størrelse?

Min kode:

Private _password As String
        Private _iv As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}

        Public Property Password() As String
            Get
                Return _password
            End Get
            Set(ByVal value As String)
                _password = value
            End Set
        End Property

Public Sub Encrypt(ByVal name As String, ByVal data As String)
            Dim loc As String = String.Format("{0}\{1}.txt", Locations.SafeItemsDirectory, name)
            Dim key As Byte() = Encoding.UTF8.GetBytes(_password)

            Dim fStream As FileStream = File.Open(loc, FileMode.OpenOrCreate)

            Dim RijndaelAlg As Rijndael = Rijndael.Create
            RijndaelAlg.Key = key ' Her går det galt
            RijndaelAlg.IV = _iv

            Dim cStream As New CryptoStream(fStream, RijndaelAlg.CreateEncryptor(), CryptoStreamMode.Write)
            Dim sWriter As New StreamWriter(cStream)

            sWriter.WriteLine(data)
            sWriter.Close()
            cStream.Close()
            fStream.Close()
        End Sub
Avatar billede arne_v Ekspert
18. april 2006 - 23:28 #1
AES (Rijndael) skal saa vidt jeg ved have et bestemt antal bytes
som key - proev med 16 eller 24 bytes
Avatar billede arne_v Ekspert
18. april 2006 - 23:30 #2
jeg har lige checket - jeg har kode som virker med 24 !
Avatar billede jacknet Nybegynder
18. april 2006 - 23:36 #3
kan man lave det på en fix måde, således at key altid er fx 24 bytes uanset hvor mange bytes _password er på?

Tænker på: Dim key As Byte() = Encoding.UTF8.GetBytes(_password)
Avatar billede arne_v Ekspert
18. april 2006 - 23:43 #4
NB : jeg vil anbefale Encoding.Default.GetBytes fordi den giver 1 char -> 1 byte
    i modsaetning til UTF8 som kan give 1 eller 2 bytes
Avatar billede arne_v Ekspert
18. april 2006 - 23:44 #5
Test paa langden af password og pad med noget hvis det er for kort.

Men hvis det noget er kendt saa er algoritmen formentlig mindre sikker.
Avatar billede jacknet Nybegynder
19. april 2006 - 00:01 #6
Cool. Smid et svar.
Avatar billede arne_v Ekspert
19. april 2006 - 04:17 #7
ok
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
Kurser inden for grundlæggende programmering

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