Задать вопрос
Ответы пользователя по тегу Защита от взлома
  • Как рассчитать Хеш сумму файла по средствам C#?

    @Jewish_Cat
    Увлекаюсь C#
    Как вариант забей на проверку хешей файлов. Это такое себе. Лучше шифровать информацию в файле игры.
    Смысл в чем? Если игру он не будет разбирать, то ты просто создаешь любой свой "строковый ключ" для шифрования. При выходе из игры, ты значение с "монетами" шифруешь и записываешь в файл. Если он захочет отредактировать, то ему придется помучиться в подборке алгоритма шифрования и дешифрования. Я тебе дал готовое решения для шифрования/дешифрования, только подставь свой ключ. Как вариант сгенерируй ключ через какой нибудь sha1 алгоритм.

    P.S. Откажись от шифрования используя MD5. Он намного медленее SHA1 и менее надежнее
    public static string keyStr = "ТУТ ЛЮБАЯ ТВОЯ СТРОЧКА(Любой рандомный текст)";
      
            public static string Encrypt(string PlainText)
            {
                RijndaelManaged aes = new RijndaelManaged();
                aes.BlockSize = 128;
                aes.KeySize = 256;
                aes.Mode = CipherMode.ECB;
    
                byte[] keyArr = Convert.FromBase64String(keyStr);
                byte[] KeyArrBytes32Value = new byte[32];
                Array.Copy(keyArr, KeyArrBytes32Value, 32);
    
                aes.Key = KeyArrBytes32Value;
    
                ICryptoTransform encrypto = aes.CreateEncryptor();
    
                byte[] plainTextByte = ASCIIEncoding.UTF8.GetBytes(PlainText);
                byte[] CipherText = encrypto.TransformFinalBlock(plainTextByte, 0, plainTextByte.Length);
                return Convert.ToBase64String(CipherText);
            }
            public static string Decrypt(string CipherText)
            {
                RijndaelManaged aes = new RijndaelManaged();
                aes.BlockSize = 128;
                aes.KeySize = 256;
                aes.Mode = CipherMode.ECB;
    
                byte[] keyArr = Convert.FromBase64String(keyStr);
                byte[] KeyArrBytes32Value = new byte[32];
                Array.Copy(keyArr, KeyArrBytes32Value, 32);
    
                aes.Key = KeyArrBytes32Value;
    
                ICryptoTransform decrypto = aes.CreateDecryptor();
    
                byte[] encryptedBytes = Convert.FromBase64CharArray(CipherText.ToCharArray(), 0, CipherText.Length);
                byte[] decryptedData = decrypto.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
                return ASCIIEncoding.UTF8.GetString(decryptedData);
            }
    Ответ написан
    Комментировать