2016-08-29 3 views
0

Я прочитал это article о секретном зашифрованном сообщении AES в Пиратском заливе. (это старые новости)Как шифровать сообщение с помощью AES-шифрования?

Решатель использовал эту команду в своем терминале linux для расшифровки сообщения.

echo "JyO7wNzc8xht47QKWohfDVj6Sc2qH+X5tBCT+uetocIJcjQnp/2f1ViEBR+ty0Cz" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d -p 

decrpyted сообщение была ссылка: https://www.youtube.com/watch?v=-YEG9DgRHhA


Я хочу encrpyt мое собственное сообщение и тот же способ Pirate Bay сделал. Я предполагаю, что мне нужно будет изменить зашифрованный текст на свое собственное сообщение и изменить команду для шифрования, а не для расшифровки. Но как мне это сделать?

+0

Не забудьте использовать другой ключ. – Daniel

ответ

1

Это должно быть так же просто, как:

echo -n "https://stackoverflow.com/q/39197703/5128464" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -iv 0 -e -base64 

Предоставление шифротекста:

l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk 

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

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d 

Сдача под открытым текстом:

https://stackoverflow.com/q/39197703/5128464 

Но если вы внимательно посмотрите на оригинальный расшифрованный текст (т. дамп фактического сообщения байт):

echo "JyO7wNzc8xht47QKWohfDVj6Sc2qH+X5tBCT+uetocIJcjQnp/2f1ViEBR+ty0Cz" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 

Вы это (обратите внимание на пять «00» байт в конце выпуска):

0000000: 68 74 74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 https://www.yout 
0000010: 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d ube.com/watch?v= 
0000020: 2d 59 45 47 39 44 67 52 48 68 41 00 00 00 00 00 -YEG9DgRHhA..... 

И если вы повторите то же для предыдущего результата :

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 

Вы получаете другой конец (на этот раз есть пять '05' байт):

0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover 
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197 
0000020: 37 30 33 2f 35 31 32 38 34 36 34 05 05 05 05 05 703/5128464..... 

Эти байты называются padding bytes и должны быть добавлены как AES cipher в CBC mode не могут обрабатывать сообщения, длина которых не равна N * 128 бит (т. которые не могут быть разделены на 16-байтовых блоков)

Заполнитель, используемый в исходном незашифрованном (т.е. 00 00 00 00 00) является zero padding, но второй (04 04 04 04) является PKCS7 обивка.

К сожалению заполнение нулями не поддерживается непосредственно в утилитах командной OpenSSL линии, так что вы должны добавить его вручную (обратите внимание на добавленные нулевые байты и дополнительный -nopad вариант):

echo -ne "https://stackoverflow.com/q/39197703/5128464\0\0\0\0\0" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -e -base64 

Давать:

l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR 

Вы можете проверить заполнение нового открытого текста с:

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 

Чтобы увидеть, что прокладка правильно в настоящее время:

0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover 
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197 
0000020: 37 30 33 2f 35 31 32 38 34 36 34 00 00 00 00 00 703/5128464..... 

Если вы хотите, чтобы создать отступы в оболочке, смотри, например, here (под EDIT3).

Удачи вам!

Смежные вопросы