Как расшифровать строку правильно

339
05 апреля 2017, 13:54

Я вот не сильно разбираюсь в шифровании. Если у кого то есть предположения, как мне помочь, говорите)) .

У меня есть устройство, которое подключается к телефону и читает информацию с кредитной карты — card reader своего рода.

Так вот я получаю вот такой массив

44 55 66 77 00 00 21 37 af f9 67 f9 55 80 32 69 b8 d4 d1 39 62 9b c7 c2 1c 41 ae e9 16 64 39 c7 e6 e7 a6 c0 3d 2b e9 5e e2 71 3b e3 7a 05 bd 82 46 02 09 29 fe b7 5c 28 8d e6 6f a4 3d 72 4a 4c b2 d3 62 4e 2d 08 c7 0c f9 49 97 fe c3 0b b8 9a dd 56 f5 a2 3a 0f c6 f9 89 39 3a 1a 38 26 90 25 30 78 4a 81 6b 78 da 28 ad 41 da 48 4e 60 58 73 e5 c4 c1 45 af 35 1f 52 d7 74 f0 99 25 1f 01 05 31 30 30 30 00 00 00 00 00 00 00 00

который вот таким способом конвертирую с строку

String[] tmps = event.getValue().split(" ");
            StringBuffer sbf = new StringBuffer();
            for (String str : tmps) {
                sbf.append((char) Integer.parseInt(str, 16));
                sbf.append(" ");
            }
            final String data = sbf.toString().replaceAll(" ", "");

И в итоге получаю вот такое значение

DUfw����!7¯ùgùU2i¸ÔÑ9bÇÂA®éd9Çæç¦À=+é^âqz½F   )þ·\(æo¤=rJL²ÓbN-ÇùIþøÝVõ¢:Æù9:8&%0xJkxÚ(­AÚHN`XsåÄÁE¯5R×tð%1000����������������

У меня есть вот такая проверка

// plain text of card data
            if (data.toUpperCase().startsWith("B") && idx > 0 && data.indexOf("?") > 0) {

которая говорит о том, что можно получить чистые данные, если строка будет начинаться с B , в другом случае

// encryption data of card data
            else if (data.length() > 20 + 5 + 4) {

Это зашифрованые данные.

Так вот я не могу понять, как расшифровать их или как сделать так, чтоб они изначально не были зашифрованы.

Я пробовал в разных системах расшифровывать в 10, 2, 8 , но ничего не получилось.

Если что-то забыл, спрашивайте.

Answer 1

Похоже что DUfw он же 44 55 66 77 - это дескриптор протокола, а 1000 в конце терминатор протокола. Все что между ними какой-то шифрованный поток, который вы не дешифруете, иначе я начну сомневаться в интеллекте разработчиков протокола обмена данными с картой :)

Не мучайтесь.

Answer 2

По-моему Ваш вопрос не имеет ответа, так как вполне возможно, что расшифровать данную строку невозможно. Если о типе шифрования нет никаких дополнительных данных, то ваш вопрос лишён смысла. Если система шифрования сделана качественно, то ваши преобразования в 2, 8, 10 СС, очевидно, ничего не дадут.

READ ALSO
Управление Constraint Layout из кода

Управление Constraint Layout из кода

Как управлять Margins из кода элементами из Constraint Layout

256
Получение уникальных символов строки

Получение уникальных символов строки

Нужно перебрать все символы строки и если оный отсутствует в результирующей строке - добавить его в неёВот что у меня получилось:

280
Hibernate 5.2.9.Final terminate

Hibernate 5.2.9.Final terminate

После выполнения метода main программа не завершается

189
Множественные перспективы в одном SVG

Множественные перспективы в одном SVG

Возможно ли иметь несколько различных фрагментов изображений в одном SVG, или даже просто имитировать такой эффект с использованием особых...

222