Ignore:
Timestamp:
Sep 21, 2009, 12:18:09 PM (12 years ago)
Author:
oruba
Message:

Preprocessing phase now works with a different number of public and secret variables too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CubeAttack/CubeAttack.cs

    r519 r544  
    254254
    255255                for (int i = 0; i < v.Length; i++)
    256                 {
    257256                    vBool[i] = Convert.ToBoolean(v[i]);
     257                for (int i = 0; i < x.Length; i++)
    258258                    xBool[i] = Convert.ToBoolean(x[i]);
    259                 }
    260259
    261260                bool[] vx = new bool[v.Length + x.Length];
     
    371370
    372371            // Compute the free term
    373             for (int i = 0; i < Math.Pow(2, cube.Count); i++)
     372            for (ulong i = 0; i < Math.Pow(2, cube.Count); i++)
    374373            {
    375374                for (int j = 0; j < cube.Count; j++)
    376                     pubVarElement[cube[j]] = (i & (1 << j)) > 0 ? 1 : 0;
     375                    pubVarElement[cube[j]] = (i & ((ulong)1 << j)) > 0 ? 1 : 0;
    377376                constant ^= Blackbox((int[])pubVarElement.Clone(), (int[])secVarElement.Clone());
    378377            }
     
    380379            CubeAttack_LogMessage("c = " + (constant).ToString(), NotificationLevel.Info);
    381380
    382             // Compute aj of I
     381            // Compute coefficients
    383382            for (int k = 0; k < settings.SecretVar; k++)
    384383            {
    385                 for (int i = 0; i < Math.Pow(2, cube.Count); i++)
     384                for (ulong i = 0; i < Math.Pow(2, cube.Count); i++)
    386385                {
    387386                    secVarElement[k] = 1;
    388387                    for (int j = 0; j < cube.Count; j++)
    389                         pubVarElement[cube[j]] = (i & (1 << j)) > 0 ? 1 : 0;
     388                        pubVarElement[cube[j]] = (i & ((ulong)1 << j)) > 0 ? 1 : 0;
    390389                    coeff ^= Blackbox((int[])pubVarElement.Clone(), (int[])secVarElement.Clone());
    391390
     
    537536                    vecXY[i] = (vectorX[i] ^ vectorY[i]);
    538537
    539                 for (int i = 0; i < Math.Pow(2, cube.Count); i++)
     538                for (ulong i = 0; i < Math.Pow(2, cube.Count); i++)
    540539                {
    541540                    for (int j = 0; j < cube.Count; j++)
    542                         pubVarElement[cube[j]] = (i & (1 << j)) > 0 ? 1 : 0;
     541                        pubVarElement[cube[j]] = (i & ((ulong)1 << j)) > 0 ? 1 : 0;
    543542                    psLeft ^= Blackbox((int[])pubVarElement.Clone(), new int[settings.SecretVar])
    544543                            ^ Blackbox((int[])pubVarElement.Clone(), (int[])vectorX.Clone())
     
    578577                for (int j = 0; j < settings.SecretVar; j++)
    579578                    vectorX[j] = rnd.Next(0, 2);
    580                 for (int j = 0; j < Math.Pow(2, cube.Count); j++)
     579                for (ulong j = 0; j < Math.Pow(2, cube.Count); j++)
    581580                {
    582581                    for (int k = 0; k < cube.Count; k++)
    583                         pubVarElement[cube[k]] = (j & (1 << k)) > 0 ? 1 : 0;
     582                        pubVarElement[cube[k]] = (j & ((ulong)1 << k)) > 0 ? 1 : 0;
    584583                    output ^= Blackbox(pubVarElement, vectorX);
    585584
     
    837836                for (int j = 0; j < settings.PublicVar; j++)
    838837                    pubVarElement[j] = 0;
    839                 for (int k = 0; k < Math.Pow(2, cubeIndex[i].Count); k++)
     838                for (ulong k = 0; k < Math.Pow(2, cubeIndex[i].Count); k++)
    840839                {
    841840                    for (int l = 0; l < cubeIndex[i].Count; l++)
    842                         pubVarElement[cubeIndex[i][l]] = (k & (1 << l)) > 0 ? 1 : 0;
     841                        pubVarElement[cubeIndex[i][l]] = (k & ((ulong)1 << l)) > 0 ? 1 : 0;
    843842
    844843                    try
Note: See TracChangeset for help on using the changeset viewer.