Search code examples
c#silverlightblowfish

C# How to use blowfish in silverlight?


I had found this free source code in http://www.broccoliproducts.com/softnotebook/desblowfish/BlowFishCrytography.cs

When I imported it in my project, it gave me some error about

The name '_assertBufferMatch' does not exist in the current context

The name '_assertBufferMatch' does not exist in the current context

The name 'Trace' does not exist in the current context

I hadn't modified everything, just rebuild the project, then the error occurred .

this error one is

        public static void Test()
        {

            // Declaration of local variables
            Random rnd = new Random(1);
            byte[] Key = null;
            byte[] bufferIn = null;
            byte[] bufferOut = null;
            byte[] bufferReturned = null;

            // Loop through the test vectors
            for (int iTest = 0; iTest < TestKeys.Length; iTest++)
            {

                // Load the key and plain-text
                Key = BitConverter.GetBytes(TestKeys[iTest]).Reverse().ToArray();
                bufferIn = BitConverter.GetBytes(TestPlainText[iTest]).Reverse().ToArray();

                // Encrypt with BlowFish
                BlowFishCrytography.BlowFish(bufferIn, ref bufferOut, Key, true);

                // Compare with expected result
                byte[] expectedBufferOut = BitConverter.GetBytes(TestCypherText[iTest]).Reverse().ToArray();
                _assertBufferMatch(expectedBufferOut,bufferOut);

            }

            // Loop through decrypt-encrypt tests
            for (int iTest = 0; iTest < 100*1000; iTest++)
            {

                // Dump progress
                if ((iTest % 100) == 0)
                    Trace.TraceInformation("Test {0}", iTest);

                // Load the key and plain-text
                Key = CreateBlowFishKey(rnd, MAX_KEY_BYTE_LENGTH);

                // Create a buffer of data
                int iLength = rnd.Next(1, 10*1024);
                _softCreateBuffer(ref bufferIn, iLength);
                rnd.NextBytes(bufferIn);

                // Encrypt with BlowFish
                BlowFishCrytography.BlowFishWithPadding(bufferIn, ref bufferOut, Key, true);

                // Decrypt with BlowFish
                BlowFishCrytography.BlowFishWithPadding(bufferOut, ref bufferReturned, Key, false);

                // Compare buffers
                _assertBufferMatch(bufferIn, bufferReturned);

            }

        }

Solution

  • That code is a unit test for the module. It seems that the test is included for Silverlight, but the _assertBufferMatch method it needs is excluded for Silverlight.

    I would just remove the method and any calls to it. It will only run in debug builds, so it won't be necessary for the algorithm to actually work.