Я работаю над небольшим сценарием, который шифрует файл для отправки одному из наших поставщиков.
Рабочий процесс выглядит следующим образом:
- Мы создали ключ, который мы асимметрично шифруем, используя открытый ключ, который они предоставили
- С помощью зашифрованного ключа мы делаем симметричное шифрование файла, который нам нужно отправить
- Затем мы сжимаем оба файла (ключ + файл)
- После получения они распаковывают файл
- Они расшифровывают ключ, используя свой закрытый ключ
- Затем они дешифруют файл, используя ключ дешифрования.
Вот используемые команды:
ON LINUX
openssl rand -base64 30 > my.key
chmod 700 my.key
openssl enc -aes-256-cbc -in myfile.zip -out myfile.bin -kfile my.key
openssl rsautl -encrypt -pubin -inkey supplier_key.pem -in my.key -out encrypted.key
НА ОКНАХ
openssl\bin\openssl.exe rand -base64 30 > my.key
openssl\bin\openssl.exe enc -aes-256-cbc -in myfile.zip -out myfile.bin -kfile my.key
openssl\bin\openssl.exe rsautl -encrypt -pubin -inkey supplier_key.pem -in my.key -out encrypted.key
Мы должны сделать это, потому что файл слишком велик для асимметричного шифрования.
Для этого я сначала был в среде cygwin, и она работала отлично. Но теперь я должен заставить его работать в полной среде Windows. Я адаптировал скрипт и загрузил программу openssl для Windows.
Но когда наш поставщик получает файл, шаг 6) не работает:/
У них есть эта ошибка:
> bad decrypt 6566:error:06065064:digital envelope
> routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:325:
Я абсолютно ничего не изменил в способе работы, сценарий в основном точно такой же, поэтому я не понимаю, почему не работает дешифрование файла (хотя они могут расшифровать ключ)