Вопрос по шифрованию файлов с использованием RC4 с использованием шестнадцатеричных ключей - PullRequest
4 голосов
/ 07 сентября 2011

Мне нужно зашифровать двоичный файл с использованием алгоритма RC4 для моего скрипта (написано в bash)

Ключ также в двоичном формате

Вот что я делаю:

    echo -n -e $bPacketh > /tmp/packet
    echo -n -e $clientWriteKeyb > /tmp/cwkey
    mach=`openssl dgst -binary -hmac -md5 /tmp/cwkey /tmp/packet` 
    pkth=`openssl enc -e -rc4 -K /tmp/cwkey -in /tmp/packet`

Содержимое / tmp / packet и / tmp / cwkey выглядит следующим образом:

    >cat /tmp/packet | od -t x1

    0000000 86 09 94 8b cf 2d d3 99 94 9f 72 60 dd 3f a6 b6
    0000020 01 00 00 00 13 0b 05 00 00 00 0c 73 73 68 2d 75
    0000040 73 65 72 61 75 74 68 22 68 fb ab 5e 4d 1b 2b 61
    0000060 bd 38
    0000062

    >cat /tmp/cwkey | od -t x1 

    0000000 5d c5 45 a8 2b 44 5d 2f 49 67 f5 71 73 a8 51 5c
    0000020

Команда вычисления MAC выполнена успешно, но команда вычисления зашифрованного пакета выдает следующую ошибку:

    >openssl enc -e -rc4 -K /tmp/cwkey -in /tmp/packet

    non-hex digit
    invalid hex key value

Я искал по форумам и обнаружил, что формат ключа должен быть "0001020304 ...", но я не уверен, как преобразовать мой ключ (/ tmp / cwkey выше) в этот формат

прошу вас, пожалуйста, помогите мне

1 Ответ

3 голосов
/ 10 января 2013

Чтобы получить то, что дает вам od в этом формате:

od -t x1 | cut -d' ' -f2- | head -n -1 | tr "\n" ' ' | tr -d ' ' 

На английском языке: получить шестнадцатеричный дамп, вырезать первое поле каждой строки (количество), вырезать последнюю строку,измените оставшиеся символы новой строки на пробелы, а затем удалите все пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...