2

私はこの問題を乗り越えることができないようです.GRCで乱数発生器を使用して256ビットキーであると想定するものを作成し、それを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
4

1 に答える 1

4

C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC256 ビット長のビットストリームの 16 進コードです。

しかしEncoding.UTF8.GetBytes、あなたが考えていた方法で16進コードを対応するバイトに変換しません。

その文字列には 64 文字あるため、64 バイトの UTF-8 バイトが得られます。これは 512 ビット長のビットストリームです。

于 2009-12-02T21:21:57.350 に答える