Зашифровать и расшифровать пароль на разных компьютерах

В настоящее время я пишу небольшой скрипт, который хранит зашифрованный пароль в файле конфигурации и расшифровывает его, когда ему нужно использовать пароль. Я знаю, что это не самый безопасный способ, и он должен сделать его только «нечитаемым» для людей. Я зашифровал свой пароль с помощью:

echo PasswordToEncrypt | openssl enc -aes-256-cbc -a -salt -pass pass:PasswordForEncryptAndDecrypt

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

Мой вопрос: есть ли способ зашифровать и расшифровать пароль с помощью openssl с одинаковым результатом на разных компьютерах? Чтобы я мог зашифровать пароль на компьютере А и расшифровать его на компьютере Б?

«Также, если я снова зашифрую пароль, он будет выглядеть иначе, чем зашифрованный пароль на первом компьютере». Это нормально. Даже если вы сделаете шифрование дважды на одном компьютере, результат будет другим. Это не связано с вашей проблемой.

Joseph Sible-Reinstate Monica 27.05.2019 18:33

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

that other guy 27.05.2019 19:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
426
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Чтобы зашифровать:

$ echo TEST | openssl enc -aes-256-cbc -md md5 -salt -pass pass:my_password > enc.bin

И расшифровать:

$ cat enc.bin | openssl enc -d -aes-256-cbc  -md md5 -pass pass:my_password
TEST

Просто чтобы дать вам возможность использовать ключи:

$ openssl genrsa -out key.priv 4096
$ openssl rsa -in key.priv -pubout -out key.pub
$ echo TEST | openssl enc -aes-256-cbc -md sha256 -salt -pass file:key.pub > tmp.bin
$ cat tmp.bin | openssl enc -d -aes-256-cbc -md sha256 -pass file:key.pub > tmp.txt
TEST

Может быть проблема в том, что я зашифровал его в последней версии Ubuntu и попытался расшифровать на более старой версии raspberry pi 2 с помощью raspian? Я где-то читал, что другая версия OpenSSL может вызвать проблемы?

John Dow 28.05.2019 09:28

Скорее всего проблема в этом. Например, параметр -md меняется с md5 на sha256. В последних версиях OpenSSL (1.1.1) требуется добавить -iter 1000 -pbkdf2, что не будет работать для 1.1.0. Решение сработало для вас?

Bayou 28.05.2019 10:41

С опцией -md вы устанавливаете дайджест сообщения. Если вы шифруете без опции -md, в настоящее время по умолчанию используется sha256. В более старых версиях по умолчанию используется md5. Это разные несовместимые хэш-функции, которые приводят к ошибке bad decrypt.

Bayou 28.05.2019 12:08

Другие вопросы по теме