0

いくつかのテキストを解読しようとしていますが、このエラーが発生します。私はたくさんグーグルをして記事を読みました。同じエラーの人がたくさんいますが、私は解決できません。

以下はコード サンプルで、私が使用している IV を確認できます。

IV は AS3crypto によって生成されます。このページでデモを見ることができます。 [秘密鍵] タブで確認できます。私の設定はAES、CBCです。

つまり、IV を変更することはできず、IV は有効なものだと思います。

問題は、正しくない .Net で IV を設定する方法だと思います。

何か考えはありますか?

前もって感謝します。

Using aesAlg As New AesCryptoServiceProvider

       Dim IV_COMPONENT As Byte() = Convert.FromBase64String("a462114bca101105db976158381a4d05")
       //Dim IV_COMPONENT As Byte() = Encoding.ASCII.GetBytes("a462114bca101105db976158381a4d05")

        aesAlg.IV = IV_COMPONENT

        aesAlg.Mode = CipherMode.CBC

        ' Create a decrytor to perform the stream transform. 
        Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)

          Using msDecrypt As New MemoryStream(cipherText)

            Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)

                Using srDecrypt As New StreamReader(csDecrypt)

                    plaintext = srDecrypt.ReadToEnd()
                End Using
            End Using
        End Using
    End Using
4

1 に答える 1

0

別の文字列エンコーディングを試してください。クラスであなたと同じ base64 文字列を使用しましたが、IV の生成とエンコードを制御できました。おそらく、使用された UTF8 などから IV バイト配列の文字列エンコード形式を取得した場所ならどこでも。

IVとして使用される特定のバイト配列の長さしかないことをどこかで読んだと思います。確認する 1 つの方法は、さまざまなエンコーディングでその文字列からバイト配列を取得し、2 の累乗 (128、256... または 192 も一般的なマジック ナンバーであるため) に最もよく似ているバイト配列を使用することです。

于 2013-06-26T15:35:33.220 に答える