ここで何が起こっているのか本当にわかりません。私のアプリはファイルを正しく問題なく暗号化していますが、同じファイルを復号化しようとすると IndexOutOfRangeException がスローされます...
これが私のコードです:
Public Sub EncryptDecrypt(ByVal Action As String, ByVal InFile As String, ByVal OutFile As String)
Try
Dim Buffer(4096) As Byte
Dim Stream As CryptoStream
Dim Rij As New System.Security.Cryptography.RijndaelManaged
Dim Key(), IV() As Byte
FSIn = New FileStream(InFile, FileMode.Open, FileAccess.Read)
FSOut = New FileStream(OutFile, FileMode.OpenOrCreate, FileAccess.Write)
FSOut.SetLength(0)
Key = CreateKey("p0Ju423KQY7h4D29Ml536jbX7gS2Q6Rtm87XvRttlKiZ")
IV = CreateIV("p0Ju423KQY7h4D29Ml536jbX7gS2Q6Rtm87XvRttlKiZ")
If Action = "E" Then
Stream = New CryptoStream(FSOut, Rij.CreateEncryptor(Key, IV), CryptoStreamMode.Write)
Else
Stream = New CryptoStream(FSOut, Rij.CreateDecryptor(Key, IV), CryptoStreamMode.Write)
End If
Stream.Close()
FSIn.Close()
FSOut.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
エラーがStream.Close()
行に表示されます。
同じコードを他の場所に適用しましたが、問題はありません...
ここに私のスタックトレースがあります:
System.IndexOutOfRangeException がキャッチされました Message="インデックスが配列の範囲外でした。"
Source="mscorlib" StackTrace: System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security.Cryptography .RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) System.Security.Cryptography.CryptoStream.FlushFinalBlock() で System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) で System.IO.Stream.Close () Crypt.EncryptDecrypt (文字列アクション、文字列 InFile、文字列 OutFile) で D:\Development\Projects\Web\WebSite1\App_Code\Crypt.vb:line 34 InnerException:
どんな助けでも大歓迎です。
EDIT 1 aazのコメントの後、修正して置き換えました
Stream = New CryptoStream(FSOut, Rij.CreateDecryptor(Key, IV), CryptoStreamMode.Write)
と
Stream = New CryptoStream(FSIn, Rij.CreateDecryptor(Key, IV), CryptoStreamMode.Write)
結果のスタック トレースは次のとおりです。
System.IndexOutOfRangeException がキャッチされました Message="インデックスが配列の範囲外でした。" Source="mscorlib" StackTrace: System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] > inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 > outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security .Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] > inputBuffer, Int32 inputOffset, Int32 inputCount) で System.Security.Cryptography.CryptoStream.FlushFinalBlock() で System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) で System.IO. Crypt.EncryptDecrypt(文字列アクション、文字列 InFile、文字列 OutFile) での Stream.Close() > D:
私には同じエラーのようです...
編集終了 1