NSoft.NFramework.Cryptography.Aria.AriaEngine.AriaEngine C# (CSharp) Method

AriaEngine() static private method

Static Initializer
static private AriaEngine ( ) : System
return System
        static AriaEngine() {
            if(log.IsInfoEnabled)
                log.Info("Aria 암호화 Engine을 초기화합니다...");

            var expArr = new int[DefaultAriaKeySize];
            var logArr = new int[DefaultAriaKeySize];

            expArr[0] = 1;

            for(var i = 1; i < DefaultAriaKeySize; i++) {
                var j = (expArr[i - 1] << 1) ^ expArr[i - 1];
                if((j & 0x100) != 0)
                    j ^= 0x11b;
                expArr[i] = j;
            }

            for(var i = 1; i < 255; i++)
                logArr[expArr[i]] = i;

            int[][] A = {
                            new[] { 1, 0, 0, 0, 1, 1, 1, 1 },
                            new[] { 1, 1, 0, 0, 0, 1, 1, 1 },
                            new[] { 1, 1, 1, 0, 0, 0, 1, 1 },
                            new[] { 1, 1, 1, 1, 0, 0, 0, 1 },
                            new[] { 1, 1, 1, 1, 1, 0, 0, 0 },
                            new[] { 0, 1, 1, 1, 1, 1, 0, 0 },
                            new[] { 0, 0, 1, 1, 1, 1, 1, 0 },
                            new[] { 0, 0, 0, 1, 1, 1, 1, 1 }
                        };
            int[][] B = {
                            new[] { 0, 1, 0, 1, 1, 1, 1, 0 },
                            new[] { 0, 0, 1, 1, 1, 1, 0, 1 },
                            new[] { 1, 1, 0, 1, 0, 1, 1, 1 },
                            new[] { 1, 0, 0, 1, 1, 1, 0, 1 },
                            new[] { 0, 0, 1, 0, 1, 1, 0, 0 },
                            new[] { 1, 0, 0, 0, 0, 0, 0, 1 },
                            new[] { 0, 1, 0, 1, 1, 1, 0, 1 },
                            new[] { 1, 1, 0, 1, 0, 0, 1, 1 }
                        };

            for(var i = 0; i < DefaultAriaKeySize; i++) {
                var t = 0;
                var p = (i == 0) ? 0 : expArr[255 - logArr[i]];

                for(var j = 0; j < 8; j++) {
                    var s = 0;
                    for(var k = 0; k < 8; k++) {
                        if(((p >> (7 - k)) & 0x01) != 0)
                            s ^= A[k][j];
                    }
                    t = (t << 1) ^ s;
                }
                t ^= 0x63;
                S1[i] = (byte)t;
                X1[t] = (byte)i;
            }

            for(var i = 0; i < DefaultAriaKeySize; i++) {
                var t = 0;
                var p = i == 0 ? 0 : expArr[(247 * logArr[i]) % 255];

                for(var j = 0; j < 8; j++) {
                    var s = 0;
                    for(var k = 0; k < 8; k++) {
                        if(((p >> k) & 0x01) != 0)
                            s ^= B[7 - j][k];
                    }
                    t = (t << 1) ^ s;
                }
                t ^= 0xe2;
                S2[i] = (byte)t;
                X2[t] = (byte)i;
            }

            for(var i = 0; i < DefaultAriaKeySize; i++) {
                TS1[i] = 0x00010101 * (S1[i] & 0xff);
                TS2[i] = 0x01000101 * (S2[i] & 0xff);
                TX1[i] = 0x01010001 * (X1[i] & 0xff);
                TX2[i] = 0x01010100 * (X2[i] & 0xff);
            }

            if(log.IsInfoEnabled)
                log.Info("Aria 암호화 Engine을 초기화했습니다!!!");
        }

Same methods

AriaEngine::AriaEngine ( int keySize ) : System