/// <summary>
        /// Allows to pick current obscured value as is.
        /// </summary>
        /// Use it in conjunction with SetEncrypted().<br/>
        /// Useful for saving data in obscured state.
        public decimal GetEncrypted()
        {
            ApplyNewCryptoKey();

            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.b1  = hiddenValue[0];
            union.b2  = hiddenValue[1];
            union.b3  = hiddenValue[2];
            union.b4  = hiddenValue[3];
            union.b5  = hiddenValue[4];
            union.b6  = hiddenValue[5];
            union.b7  = hiddenValue[6];
            union.b8  = hiddenValue[7];
            union.b9  = hiddenValue[8];
            union.b10 = hiddenValue[9];
            union.b11 = hiddenValue[10];
            union.b12 = hiddenValue[11];
            union.b13 = hiddenValue[12];
            union.b14 = hiddenValue[13];
            union.b15 = hiddenValue[14];
            union.b16 = hiddenValue[15];

            return(union.d);
        }
        public void SetEncrypted(decimal encrypted)
        {
            DecimalLongBytesUnion decimalLongBytesUnion = default(DecimalLongBytesUnion);

            decimalLongBytesUnion.d = encrypted;
            hiddenValue             = new byte[16]
            {
                decimalLongBytesUnion.b1,
                decimalLongBytesUnion.b2,
                decimalLongBytesUnion.b3,
                decimalLongBytesUnion.b4,
                decimalLongBytesUnion.b5,
                decimalLongBytesUnion.b6,
                decimalLongBytesUnion.b7,
                decimalLongBytesUnion.b8,
                decimalLongBytesUnion.b9,
                decimalLongBytesUnion.b10,
                decimalLongBytesUnion.b11,
                decimalLongBytesUnion.b12,
                decimalLongBytesUnion.b13,
                decimalLongBytesUnion.b14,
                decimalLongBytesUnion.b15,
                decimalLongBytesUnion.b16
            };
            if (onCheatingDetected != null)
            {
                fakeValue = InternalDecrypt();
            }
        }
Esempio n. 3
0
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = cryptoKey;
                hiddenValue      = InternalEncrypt(0m);
                fakeValue        = 0m;
                fakeValueActive  = false;
                inited           = true;

                return(0m);
            }

            var union = new DecimalLongBytesUnion();

            union.b16 = hiddenValue;

            union.l1 = union.l1 ^ currentCryptoKey;
            union.l2 = union.l2 ^ currentCryptoKey;

            var decrypted = union.d;

            if (Detectors.ObscuredCheatingDetector.ExistsAndIsRunning && fakeValueActive && decrypted != fakeValue)
            {
                Detectors.ObscuredCheatingDetector.Instance.OnCheatingDetected();
            }

            return(decrypted);
        }
        private static byte[] InternalEncrypt(decimal value, long key)
        {
            long num = key;

            if (num == 0L)
            {
                num = cryptoKey;
            }
            DecimalLongBytesUnion decimalLongBytesUnion = default(DecimalLongBytesUnion);

            decimalLongBytesUnion.d   = value;
            decimalLongBytesUnion.l1 ^= num;
            decimalLongBytesUnion.l2 ^= num;
            return(new byte[16]
            {
                decimalLongBytesUnion.b1,
                decimalLongBytesUnion.b2,
                decimalLongBytesUnion.b3,
                decimalLongBytesUnion.b4,
                decimalLongBytesUnion.b5,
                decimalLongBytesUnion.b6,
                decimalLongBytesUnion.b7,
                decimalLongBytesUnion.b8,
                decimalLongBytesUnion.b9,
                decimalLongBytesUnion.b10,
                decimalLongBytesUnion.b11,
                decimalLongBytesUnion.b12,
                decimalLongBytesUnion.b13,
                decimalLongBytesUnion.b14,
                decimalLongBytesUnion.b15,
                decimalLongBytesUnion.b16
            });
        }
Esempio n. 5
0
        /// <summary>
        /// Allows to explicitly set current obscured value. Crypto key should be same as when encrypted value was got with GetEncrypted().
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        /// \sa FromEncrypted()
        public void SetEncrypted(decimal encrypted)
        {
            inited = true;
            var union = new DecimalLongBytesUnion();

            union.d = encrypted;

            hiddenValue = union.b16;

            if (currentCryptoKey == 0)
            {
                currentCryptoKey = cryptoKey;
            }

            if (Detectors.ObscuredCheatingDetector.ExistsAndIsRunning)
            {
                fakeValueActive = false;
                fakeValue       = InternalDecrypt();
                fakeValueActive = true;
            }
            else
            {
                fakeValueActive = false;
            }
        }
        public decimal GetEncrypted()
        {
            if (currentCryptoKey != cryptoKey)
            {
                decimal value = InternalDecrypt();
                hiddenValue      = InternalEncrypt(value);
                currentCryptoKey = cryptoKey;
            }
            DecimalLongBytesUnion decimalLongBytesUnion = default(DecimalLongBytesUnion);

            decimalLongBytesUnion.b1  = hiddenValue[0];
            decimalLongBytesUnion.b2  = hiddenValue[1];
            decimalLongBytesUnion.b3  = hiddenValue[2];
            decimalLongBytesUnion.b4  = hiddenValue[3];
            decimalLongBytesUnion.b5  = hiddenValue[4];
            decimalLongBytesUnion.b6  = hiddenValue[5];
            decimalLongBytesUnion.b7  = hiddenValue[6];
            decimalLongBytesUnion.b8  = hiddenValue[7];
            decimalLongBytesUnion.b9  = hiddenValue[8];
            decimalLongBytesUnion.b10 = hiddenValue[9];
            decimalLongBytesUnion.b11 = hiddenValue[10];
            decimalLongBytesUnion.b12 = hiddenValue[11];
            decimalLongBytesUnion.b13 = hiddenValue[12];
            decimalLongBytesUnion.b14 = hiddenValue[13];
            decimalLongBytesUnion.b15 = hiddenValue[14];
            decimalLongBytesUnion.b16 = hiddenValue[15];
            return(decimalLongBytesUnion.d);
        }
        /// <summary>
        /// Use it to decrypt long you got from Encrypt(decimal) back to decimal, uses passed crypto key.
        /// </summary>
        public static decimal Decrypt(decimal value, long key)
        {
            DecimalLongBytesUnion u = new DecimalLongBytesUnion();

            u.d  = value;
            u.l1 = u.l1 ^ key;
            u.l2 = u.l2 ^ key;
            return(u.d);
        }
        public static decimal Decrypt(decimal value, long key)
        {
            DecimalLongBytesUnion decimalLongBytesUnion = default(DecimalLongBytesUnion);

            decimalLongBytesUnion.d   = value;
            decimalLongBytesUnion.l1 ^= key;
            decimalLongBytesUnion.l2 ^= key;
            return(decimalLongBytesUnion.d);
        }
        /// <summary>
        /// Allows to pick current obscured value as is.
        /// </summary>
        /// Use it in conjunction with SetEncrypted().<br/>
        /// Useful for saving data in obscured state.
        public decimal GetEncrypted()
        {
            ApplyNewCryptoKey();

            var union = new DecimalLongBytesUnion();

            union.b16 = hiddenValue;

            return(union.d);
        }
Esempio n. 10
0
        /// <summary>
        /// Allows to explicitly set current obscured value.
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        public void SetEncrypted(decimal encrypted)
        {
            inited = true;
            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.d = encrypted;

            hiddenValue = new[]
            {
                union.b1, union.b2, union.b3, union.b4, union.b5, union.b6, union.b7, union.b8,
                union.b9, union.b10, union.b11, union.b12, union.b13, union.b14, union.b15, union.b16
            };
        }
        /// <summary>
        /// Allows to explicitly set current obscured value.
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        public void SetEncrypted(decimal encrypted)
        {
            inited = true;
            var union = new DecimalLongBytesUnion();

            union.d = encrypted;

            hiddenValue = union.b16;

            if (currentCryptoKey == 0)
            {
                currentCryptoKey = cryptoKey;
            }
        }
        /// <summary>
        /// Allows to explicitly set current obscured value.
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        public void SetEncrypted(decimal encrypted)
        {
            inited = true;
            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.d = encrypted;

            hiddenValue = union.b16;

            if (Detectors.ObscuredCheatingDetector.IsRunning)
            {
                fakeValue = InternalDecrypt();
            }
        }
Esempio n. 13
0
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = cryptoKey;
                hiddenValue      = InternalEncrypt(0m);
                fakeValue        = 0m;
                inited           = true;
            }

            long key = cryptoKey;

            if (currentCryptoKey != cryptoKey)
            {
                key = currentCryptoKey;
            }

            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.b1  = hiddenValue[0];
            union.b2  = hiddenValue[1];
            union.b3  = hiddenValue[2];
            union.b4  = hiddenValue[3];
            union.b5  = hiddenValue[4];
            union.b6  = hiddenValue[5];
            union.b7  = hiddenValue[6];
            union.b8  = hiddenValue[7];
            union.b9  = hiddenValue[8];
            union.b10 = hiddenValue[9];
            union.b11 = hiddenValue[10];
            union.b12 = hiddenValue[11];
            union.b13 = hiddenValue[12];
            union.b14 = hiddenValue[13];
            union.b15 = hiddenValue[14];
            union.b16 = hiddenValue[15];

            union.l1 = union.l1 ^ key;
            union.l2 = union.l2 ^ key;

            decimal decrypted = union.d;

            if (Detectors.ObscuredCheatingDetector.isRunning && fakeValue != 0 && decrypted != fakeValue)
            {
                Detectors.ObscuredCheatingDetector.Instance.OnCheatingDetected();
            }

            return(decrypted);
        }
Esempio n. 14
0
        /// <summary>
        /// Allows to explicitly set current obscured value.
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        public void SetEncrypted(decimal encrypted)
        {
            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.d = encrypted;

            hiddenValue = new[]
            {
                union.b1, union.b2, union.b3, union.b4, union.b5, union.b6, union.b7, union.b8,
                union.b9, union.b10, union.b11, union.b12, union.b13, union.b14, union.b15, union.b16
            };

            if (Detectors.ObscuredCheatingDetector.isRunning)
            {
                fakeValue = InternalDecrypt();
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Allows to explicitly set current obscured value. Crypto key should be same as when encrypted value was got with GetEncrypted().
        /// </summary>
        /// Use it in conjunction with GetEncrypted().<br/>
        /// Useful for loading data stored in obscured state.
        /// \sa FromEncrypted()
        public void SetEncrypted(decimal encrypted, long key)
        {
            inited           = true;
            hiddenValue      = DecimalLongBytesUnion.ConvertDecimalToB16(encrypted);
            currentCryptoKey = key;

            if (Detectors.ObscuredCheatingDetector.ExistsAndIsRunning)
            {
                fakeValueActive = false;
                fakeValue       = InternalDecrypt();
                fakeValueActive = true;
            }
            else
            {
                fakeValueActive = false;
            }
        }
        private static ACTkByte16 InternalEncrypt(decimal value, long key)
        {
            var currentKey = key;

            if (currentKey == 0L)
            {
                currentKey = cryptoKey;
            }

            var union = new DecimalLongBytesUnion();

            union.d  = value;
            union.l1 = union.l1 ^ currentKey;
            union.l2 = union.l2 ^ currentKey;

            return(union.b16);
        }
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = cryptoKey;
                hiddenValue      = InternalEncrypt(0m);
                fakeValue        = 0m;
                inited           = true;
            }
            long num = cryptoKey;

            if (currentCryptoKey != cryptoKey)
            {
                num = currentCryptoKey;
            }
            DecimalLongBytesUnion decimalLongBytesUnion = default(DecimalLongBytesUnion);

            decimalLongBytesUnion.b1  = hiddenValue[0];
            decimalLongBytesUnion.b2  = hiddenValue[1];
            decimalLongBytesUnion.b3  = hiddenValue[2];
            decimalLongBytesUnion.b4  = hiddenValue[3];
            decimalLongBytesUnion.b5  = hiddenValue[4];
            decimalLongBytesUnion.b6  = hiddenValue[5];
            decimalLongBytesUnion.b7  = hiddenValue[6];
            decimalLongBytesUnion.b8  = hiddenValue[7];
            decimalLongBytesUnion.b9  = hiddenValue[8];
            decimalLongBytesUnion.b10 = hiddenValue[9];
            decimalLongBytesUnion.b11 = hiddenValue[10];
            decimalLongBytesUnion.b12 = hiddenValue[11];
            decimalLongBytesUnion.b13 = hiddenValue[12];
            decimalLongBytesUnion.b14 = hiddenValue[13];
            decimalLongBytesUnion.b15 = hiddenValue[14];
            decimalLongBytesUnion.b16 = hiddenValue[15];
            decimalLongBytesUnion.l1 ^= num;
            decimalLongBytesUnion.l2 ^= num;
            decimal d = decimalLongBytesUnion.d;

            if (onCheatingDetected != null && fakeValue != 0m && d != fakeValue)
            {
                onCheatingDetected();
                onCheatingDetected = null;
            }
            return(d);
        }
Esempio n. 18
0
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = cryptoKey;
                hiddenValue      = InternalEncrypt(0m);
                inited           = true;
            }

            long key = cryptoKey;

            if (currentCryptoKey != cryptoKey)
            {
                key = currentCryptoKey;
            }

            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.b1  = hiddenValue[0];
            union.b2  = hiddenValue[1];
            union.b3  = hiddenValue[2];
            union.b4  = hiddenValue[3];
            union.b5  = hiddenValue[4];
            union.b6  = hiddenValue[5];
            union.b7  = hiddenValue[6];
            union.b8  = hiddenValue[7];
            union.b9  = hiddenValue[8];
            union.b10 = hiddenValue[9];
            union.b11 = hiddenValue[10];
            union.b12 = hiddenValue[11];
            union.b13 = hiddenValue[12];
            union.b14 = hiddenValue[13];
            union.b15 = hiddenValue[14];
            union.b16 = hiddenValue[15];

            union.l1 = union.l1 ^ key;
            union.l2 = union.l2 ^ key;

            decimal decrypted = union.d;


            return(decrypted);
        }
Esempio n. 19
0
        private static byte[] InternalEncrypt(decimal value, long key)
        {
            long currKey = key;

            if (currKey == 0L)
            {
                currKey = cryptoKey;
            }

            DecimalLongBytesUnion union = new DecimalLongBytesUnion();

            union.d  = value;
            union.l1 = union.l1 ^ currKey;
            union.l2 = union.l2 ^ currKey;

            return(new[]
            {
                union.b1, union.b2, union.b3, union.b4, union.b5, union.b6, union.b7, union.b8,
                union.b9, union.b10, union.b11, union.b12, union.b13, union.b14, union.b15, union.b16
            });
        }
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = cryptoKey;
                hiddenValue      = InternalEncrypt(0m);
                inited           = true;

                return(0m);
            }

            var union = new DecimalLongBytesUnion();

            union.b16 = hiddenValue;

            union.l1 = union.l1 ^ currentCryptoKey;
            union.l2 = union.l2 ^ currentCryptoKey;

            var decrypted = union.d;

            return(decrypted);
        }
Esempio n. 21
0
        private decimal InternalDecrypt()
        {
            if (!inited)
            {
                currentCryptoKey = GenerateKey();
                hiddenValue      = InternalEncrypt(0m, currentCryptoKey);
                fakeValue        = 0m;
                fakeValueActive  = false;
                inited           = true;

                return(0m);
            }

            var decrypted = DecimalLongBytesUnion.XorB16ToDecimal(hiddenValue, currentCryptoKey);

            if (Detectors.ObscuredCheatingDetector.ExistsAndIsRunning && fakeValueActive && decrypted != fakeValue)
            {
                Detectors.ObscuredCheatingDetector.Instance.OnCheatingDetected();
            }

            return(decrypted);
        }
Esempio n. 22
0
 /// <summary>
 /// Allows to pick current obscured value as is.
 /// </summary>
 /// <param name="key">Encryption key needed to decrypt returned value.</param>
 /// <returns>Encrypted value as is.</returns>
 /// Use it in conjunction with SetEncrypted().<br/>
 /// Useful for saving data in obscured state.
 /// \sa FromEncrypted(), SetEncrypted()
 public decimal GetEncrypted(out long key)
 {
     key = currentCryptoKey;
     return(DecimalLongBytesUnion.ConvertB16ToDecimal(hiddenValue));
 }
Esempio n. 23
0
 private static ACTkByte16 InternalEncrypt(decimal value, long key)
 {
     return(DecimalLongBytesUnion.XorDecimalToB16(value, key));
 }
Esempio n. 24
0
 /// <summary>
 /// Decrypts passed value you got from Encrypt() using same key.
 /// </summary>
 /// \sa Encrypt()
 public static decimal Decrypt(decimal value, long key)
 {
     return(DecimalLongBytesUnion.XorDecimalToDecimal(value, key));
 }