Я использую openssl для шифрования своих резервных копий перед их отправкой на ftp-сервер, где я их храню.
Сначала, когда я пытался расшифровать файлы, я получал такую ошибку:
openssl rsautl -decrypt -inkey ../key.server.pem -in enc.key.txt -out key.txt
RSA operation error 139759177856680:error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block type is not 02:rsa_pk1.c:190:
139759177856680:error:04065072:rsa routines:RSA_EAY_PRIVATE_DECRYPT:padding check failed:rsa_eay.c:616:
Я слежу это шаги для шифрования.
Я думал, что проблема в шифровании, но проверка md5sum файла показала мне, что файл на сервере был изменен на тот, который я скачал с ftp-сервера. Пример:
У меня есть файл enc.key.txt, содержащий парольную фразу для расшифровки резервной копии:
$ hexdump enc.key.txt
//...
//...
0000100 16e3 c2e3 cecd 2afe eb8c 9617 8d58 *0dd0*
//...
И шестнадцатеричный дамп файла enc.key.txt, однажды загруженный на мой компьютер, отличается на одно значение в этой строке:
//...
0000100 16e3 c2e3 cecd 2afe eb8c 9617 8d58 *0ad0*
//...
Я отредактировал значение с помощью шестнадцатеричного редактора, а затем мне удалось расшифровать файл, но я не знаю, почему файл изменяется.
Я отправляю резервные копии на ftp-сервер с помощью ncftp следующим образом:
### Dump backup using FTP ###
#Start FTP backup using ncftp
ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
put enc.key.txt
lcd $BACKUP
mput *
quit
EOF
Не могли бы вы помочь мне? заранее спасибо
Символ 0a - это перевод строки, а 0d - это возврат каретки. В «Режиме ASCII» их можно изменить при передаче по FTP между разными операционными системами. Например, в исходном файле Unix / Linux с окончанием строки LF, загруженном на сайт Windows SharePoint, каждый LF будет изменен на CRLF. Некоторые реализации могут просто изменить LF на CR. Убедитесь, что вы указываете binary
режим в ваших переводах.
Документация для ncftp
указывает, что по умолчанию используется двоичный режим, но принимает binary
как и большинство ftp-клиентов. Я бы вставил эту команду перед передачей любых файлов и посмотрел, поможет ли это. Если это так, это означает, что что-то каким-то образом отменяет значение по умолчанию.
В этом случае проблема явно не в ncftp
но Filezilla на другом конце. По умолчанию установлено «Авто», что означает, что файл с .txt
расширение - это ASS | U | MEd для ASCII, и это мешает завершению строки.