Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27376

VS 2005 Aritmetic operation resulted in an overflow

$
0
0
hi everyone,
i'm beginner on vb.net

i have some task to porting Twofish encryption from java to vb.net (VS 2005)
but i'm stuck with some overflow error,

here is my code that result overflow error

Code:

Public Function blockEncrypt(ByVal input() As Byte, ByVal inOffset As Integer, ByVal sessionKey As keyType) As Byte()
        'Try
        Dim sk As keyType = sessionKey ' // extract S-box and session key
        Dim sBox() As Integer = sk.sb
        Dim sKey() As Integer = sk.sk


        Dim repeat As Integer = input.Length / 16
        Dim finalResult() As Byte = New Byte(16 * repeat) {}
        Dim finalCtr As Integer = 0
        For z As Integer = 0 To repeat - 1

            Dim x0, x1, x2, x3 As Integer

            x0 = (input(inOffset = +1) And &HFF) Or _
                (input(inOffset = +1) And &HFF) << 8 Or _
                (input(inOffset = +1) And &HFF) << 16 Or _
                (input(inOffset = +1) And &HFF) << 24

            x1 = (input(inOffset = +1) And &HFF) Or _
                (input(inOffset = +1) And &HFF) << 8 Or _
                (input(inOffset = +1) And &HFF) << 16 Or _
                (input(inOffset = +1) And &HFF) << 24

            x2 = (input(inOffset = +1) & &HFF) Or _
                (input(inOffset = +1) And &HFF) << 8 Or _
                (input(inOffset = +1) And &HFF) << 16 Or _
                (input(inOffset = +1) And &HFF) << 24

            x3 = (input(inOffset = +1) And &HFF) Or _
                (input(inOffset = +1) And &HFF) << 8 Or _
                (input(inOffset = +1) And &HFF) << 16 Or _
                (input(inOffset = +1) And &HFF) << 24

            x0 = x0 Xor sKey(INPUT_WHITEN)
            x1 = x1 Xor sKey(INPUT_WHITEN + 1)
            x2 = x2 Xor sKey(INPUT_WHITEN + 2)
            x3 = x3 Xor sKey(INPUT_WHITEN + 3)


            Dim t0, t1 As Integer
            Dim k As Integer = ROUND_SUBKEYS
            For R As Integer = 0 To ROUNDS - 1 Step 2
                t0 = Fe32(sBox, x0, 0)
                t1 = Fe32(sBox, x1, 3)
                x2 = x2 Xor (t0 + t1 + sKey(k = +1))
                x2 = x2 >> 1 Or x2 << 31
                x3 = x3 << 1 Or x3 >> 31
                x3 = x3 Xor (t0 + (2 * t1) + sKey(k = +1))


                t0 = Fe32(sBox, x2, 0)
                t1 = Fe32(sBox, x3, 3)
                x0 = x0 Xor (t0 + t1 + sKey(k = +1))
                x0 = x0 >> 1 Or x0 << 31
                x1 = x1 << 1 Or x1 >> 31
                x1 = x1 Xor (t0 + 2 * t1 + sKey(k = +1))

            Next

            x2 = x2 Xor sKey(OUTPUT_WHITEN)
            x3 = x3 Xor sKey(OUTPUT_WHITEN + 1)
            x0 = x0 Xor sKey(OUTPUT_WHITEN + 2)
            x1 = x1 Xor sKey(OUTPUT_WHITEN + 3)


            Dim result() As Byte
            result = New Byte() { _
                          x2, (x2 >> 8), (x2 >> 16), (x2 >> 24), _
                          x3, (x3 >> 8), (x3 >> 16), (x3 >> 24), _
                          x0, (x0 >> 8), (x0 >> 16), (x0 >> 24), _
                          x1, (x1 >> 8), (x1 >> 16), (x1 >> 24) _
                        }


            For x As Integer = 0 To result.Length - 1

                finalResult(finalCtr) = result(x)
                finalCtr += 1
            Next

        Next

        Return finalResult
        'Catch ex As Exception
        'MsgBox(ex.Message, MsgBoxStyle.Information, "Encryption Block Error")
        'End Try
    End Function

the red colored code is the code that provided overflow error,

can someone tell me why it result overflow error?

i really appreciate your helps, :)
thanks

Viewing all articles
Browse latest Browse all 27376

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>