Как использовать openssl для вывода зашифрованного / расшифрованного сообщения на стандартный вывод - PullRequest
0 голосов
/ 23 мая 2019

Я просто пытаюсь зашифровать / расшифровать пароль с помощью оболочки (не в интерактивном режиме - это для автоматического сценария).Я следую этому примеру: https://superuser.com/a/20552/362669

Я попытался преобразовать его в этот файл, чтобы он не использовал файл output.bin для хранения зашифрованного текста:

#!/usr/bin/env bash

cd `dirname "$BASH_SOURCE"`

# generate a 2048-bit RSA key and store it in key.txt
openssl genrsa -out key.txt 2048

# encrypt "hello world" using the RSA key in key.txt
encrypted="$(echo "hello world" | openssl rsautl -inkey key.txt -encrypt)"

echo "encrypted: $encrypted"

# decrypt the message and output to stdout
decrypted="$(echo "$encrypted" | openssl rsautl -inkey key.txt -decrypt)"

echo "decrypted: $decrypted";

, но всеЯ получаю вот это garbully-guk:

Generating RSA private key, 2048 bit long modulus
........................................................................................................................+++
............................+++
e is 65537 (0x10001)
��◆J��┌ܥײ��R▒��%⎽F��    1l�}�%��?�0���+��%���C�8|_/!�A"Ꜵ:�������.��W2Pras��1���� ��(�a
��]�[�남␍◆�=┬─�з≤�ɦ�;�└�1MFP��^␋�@D�    �T_⎺F�Eπ�2��U2Ÿ┌π��N│�� ⎽��_\2�� 8V��%��(�^���␍4�#�π���*^D ���/�└�
RSA ⎺⎻␊⎼▒├␋⎺┼ ␊⎼⎼⎺⎼
4662363756:␊⎼⎼⎺⎼:04FFF06B:⎼⎽▒ ⎼⎺┤├␋┼␊⎽:CRYPTO_␋┼├␊⎼┼▒┌:␉┌⎺␌┐ ├≤⎻␊ ␋⎽ ┼⎺├ 02:/B┤␋┌␍R⎺⎺├/L␋␉⎼▒⎼≤/C▒␌␤␊⎽/␌⎺└.▒⎻⎻┌␊.│␉⎽/S⎺┤⎼␌␊⎽/┌␋␉⎼␊⎽⎽┌/┌␋␉⎼␊⎽⎽┌-22.260.1/┌␋␉⎼␊⎽⎽┌-2.6/␌⎼≤⎻├⎺/⎼⎽▒/⎼⎽▒_⎻┐1.␌:185:
4662363756:␊⎼⎼⎺⎼:04FFF072:⎼⎽▒ ⎼⎺┤├␋┼␊⎽:CRYPTO_␋┼├␊⎼┼▒┌:⎻▒␍␍␋┼± ␌␤␊␌┐ °▒␋┌␊␍:/B┤␋┌␍R⎺⎺├/L␋␉⎼▒⎼≤/C▒␌␤␊⎽/␌⎺└.▒⎻⎻┌␊.│␉⎽/S⎺┤⎼␌␊⎽/┌␋␉⎼␊⎽⎽┌/┌␋␉⎼␊⎽⎽┌-22.260.1/┌␋␉⎼␊⎽⎽┌-2.6/␌⎼≤⎻├⎺/⎼⎽▒/⎼⎽▒_␊▒≤.␌:580:
␍␊␌⎼≤⎻├␊␍: 
▒┌␊│⎽-└▒␌:␋┼├␊⎼⎺⎽ ▒┌␊│$ 

, и моя сессия оболочки в основном испорчена.

Кто-нибудь знает, что это такое?Может быть, это вывод символов, которые оболочка не может обработать?

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

Generating RSA private key, 2048 bit long modulus
........................+++
..........+++
e is 65537 (0x10001)
RSA operation error
4558829164:error:04FFF06B:rsa routines:CRYPTO_internal:block type is not 02:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/rsa/rsa_pk1.c:185:
4558829164:error:04FFF072:rsa routines:CRYPTO_internal:padding check failed:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/rsa/rsa_eay.c:580:
decrypted: 

1 Ответ

0 голосов
/ 23 мая 2019

Я думаю, что лучшей идеей было бы преобразовать двоичный файл в / из base64.

Просто направить вывод через команду "openssl base64", чтобы включить команду и команду "openssl base64 -d" для декодирования.

так:

encrypted = "$ (echo" hello world "| openssl rsautl -inkey key.txt -encrypt | openssl base64)"

и

decrypted = "$ (echo" $ encrypted "| openssl base64 -d | openssl rsautl -inkey key.txt -decrypt)"

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