Ваш первый вопрос ("зачем мне нужен секретный ключ для подписи открытого ключа?" )это просто :так работает шифрование с открытым ключом. При подписании чего-либо (ключа, документа и т. д. )используется ваш закрытый ключ, и это может быть проверено с помощью вашего открытого ключа. Шифрование использует ваш открытый ключ и может быть расшифровано с помощью вашего личного ключа.
Ваш второй вопрос более сложный. Подписание или неподписание ключа не должно иметь значения — подписание только предотвратит предупреждения о том, что ключ не является доверенным; это важная часть сети -из -доверия, на которой построены PGP/GPG. Но если вы проверили правильность ключа вне сети доверия (, например, получив его непосредственно от получателя ), вы можете игнорировать сеть доверия. Так что подпись не нужна.
Я предполагаю, что вы используете аргумент -r
, отличный от полного отпечатка ключа, и вы случайно шифруете не тому получателю. Вы должны использовать полный отпечаток (, например, 067E3C456BAE240ACEE88F6FEF0F382A1A7B6500
, а не короткий EF0F382A1A7B6500
и уж точно не очень короткий1A7B6500
).
Единственная другая вещь, о которой я могу думать, это то, что вы используете (вероятно, не подозревая об этом )какой-то алгоритм, который не поддерживает сторона дешифрования. Например, если вы используете более новую версию gnupg, чем получатель. Или получатель использует какую-то другую программу. Для ключа получателя нормально указать, что поддерживает программа, но, возможно, этот конкретный ключ не поддерживает или он неправильный. В GPG есть варианты переопределения (, см. справочную страницу в разделе «ВЗАИМОДЕЙСТВИЕ», но стоит попробовать --pgp8
, --pgp7
и --pgp6
).
Вы можете cd
войти в folderA
и запустить команду оттуда:
cd folderA
find. -type d -o -type f -exec bash -c '
for path; do mkdir -p "/path/to/folderB/${path/file/folder}"; done
' bash {} +
Расширение параметра ${path/file/folder}
переименовывает каждый fileXY
в folderXY
.
Если каждая папка содержит файлы, вы можете удалить -type d -o
.