Ошибка шифрования ASP.NET Rijndael - указанный ключ не является допустимым размером для этого алгоритма - PullRequest
2 голосов
/ 03 декабря 2009

Кажется, я не могу обойти эту проблему, я создал 256-битный ключ, используя генератор случайных чисел GRC , и скомбинировал его с моим IV. Я получаю сообщение об ошибке ниже:

Указанный ключ недопустим для этого алгоритма.

Любая помощь с благодарностью получена, вот код, который я использую для шифрования / дешифрования:

Private Function Rijndael(ByVal sInput As String, ByVal bEncrypt As Boolean) As String
    ' Setup the Key and Initialization Vector.
    Dim byteKey As Byte() = Encoding.UTF8.GetBytes("C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC")
    Dim byteIV As Byte() = Encoding.UTF8.GetBytes("c+O2r)J~?L:$]u[2")
    ' Create an instance of the encyrption algorithm. 
    Dim _rijndael As New RijndaelManaged()
    ' Create an encryptor using our key and IV 
    Dim transform As ICryptoTransform
    If bEncrypt Then
        transform = _rijndael.CreateEncryptor(byteKey, byteIV)
    Else
        transform = _rijndael.CreateDecryptor(byteKey, byteIV)
    End If
    ' Create the streams for input and output 
    Dim msOutput As New System.IO.MemoryStream()
    Dim msInput As New CryptoStream(msOutput, transform, CryptoStreamMode.Write)
    ' Feed data into the crypto stream. 
    msInput.Write(Encoding.UTF8.GetBytes(sInput), 0, Encoding.UTF8.GetBytes(sInput).Length)
    ' Flush crypto stream. 
    msInput.FlushFinalBlock()
    Return Convert.ToBase64String(msOutput.ToArray)
End Function

1 Ответ

4 голосов
/ 03 декабря 2009

C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC - это шестнадцатеричный код для битового потока длиной 256 бит.

Но Encoding.UTF8.GetBytes не превращает шестнадцатеричный код в соответствующие байты, как вы думали.

Поскольку в этой строке было 64 символа, вы получите 64 байта UTF-8 байтов. Это битовый поток длиной 512 бит.

...