Шифратор XOR кириллица

Шифратор XOR кириллица — это два метода, которые шифруют и дешифруют текстовые данные. Эти два метода поддерживают кириллические символы.

Вы спросите зачем вам, что-то шифровать, а потом ещё дешифровать, понижать скорость работы приложения. Существует много вариантов применения данных методов. Допустим вы сделали игру и в базу данных или Preferences пишите очки которые набрал игрок и если эти данные не зашифровать, то «прошаренный юзер» откроет вашу базу или Preferences через ES Проводник и поправит свои очки «по справедливости». Или другой пример. Вы собирали большую базу данных годами, а другой программист ее скопировал и написал приложение под эту базу данных покруче вашего, в итоге его приложение скачивают а ваше нет, хотя вы потратили кучу времени. Чтобы не было таких неприятностей ценные данные нужно шифровать.

Шифруем
Метод encrypt на вход получает строку text, которую нужно зашифровать и ключ keyWord по которому данные шифруются.

Строкой text.getBytes(); конвертирует нашу строку в байты и строкой keyWord.getBytes(); конвертируем ключ в байты. Строкой byte[] result = new byte[arr.length]; создаем новый массив байтовых переменных и задаём ему размер, как у массива нашей шифрованной строки. В цикле перебираем массив и переписываем его в новый массив с коррекцией на ключ.

На выходе из функции получаем данные типа byte[] массив байтов, это и есть наши шифрованные данные. Теперь можете их записать куда угодно.

Дешифруем
Метод decrypt на вход получает массив байтов byte[] text и ключ String keyWord. В методе выполняются аналогичные действия, что и в шифраторе, но на выходе получаем строковую переменную — это ваши расшифрованные данные.

Использовать шифратор XOR кириллица для баз данных нужно осторожно, так как поиск по шифрованным полям сильно замедлится. Шифруйте те поля по которым нет поиска.

Этот вариант шифрования рассчитан на программиста любителя, продвинутый программиста это не остановит. Дело в том, что если раскомпилировать приложение декомпилятором то ваш ключик, записанный в переменной String keyWord быстро найдется (не задавайте для ключей таких очевидных имён) и прогоняйте приложение через Guard перед публикацией, это заставит попотеть программиста.

// ШИФРАТОР
public static byte[] encrypt(String text, String keyWord)
{
    byte[] arr = text.getBytes();
    byte[] keyarr = keyWord.getBytes();
    byte[] result = new byte[arr.length];
    for(int i = 0; i< arr.length; i++)
    {
        result[i] = (byte) (arr[i] ^ keyarr[i % keyarr.length]);
    }
    return result;
}
 
// ДЕШИФРАТОР
public static String decrypt(byte[] text, String keyWord)
{
    byte[] result = new byte[text.length];
    byte[] keyarr = keyWord.getBytes();
    for(int i = 0; i < text.length;i++)
    {
        result[i] = (byte) (text[i] ^ keyarr[i% keyarr.length]);
    }
    return new String(result);
}

Ниже приведённый вариант для Java. Шифратор и дешифратор в одном.
Это чисто для тестирования.

// Пример Шифровальщика для JAVA
public static void main(String[] args) {
 
    String mesage = "Привет мир";
    byte[] m = encrypt(mesage,"123");
    System.out.println(m);
    String m2 = decrypt(m,"123");
    System.out.println(m2);  
 
    /** [B@2a139a55
        Привет мир
     **/ 
}
Поделись с друзьями:

Оставьте комментарий