Как мне обратимо (симметрично) зашифровать имя файла (с помощью или
без пути к каталогу, я в порядке, либо с), так что результат также
допустимое имя файла (менее 64 символов [или любое другое ограничение], нет
забавные персонажи, в идеале без пробелов [но не обязательно] и т. д.)?
Поиск в Google находит только алгоритмы шифрования имени файла, где результат
длинная строка двоичных символов (с использованием MIME64, преобразование в
не бинарный это легко, но это только увеличивает имя файла) и / или
несимметричные односторонние схемы шифрования (например, соленые MD5, SHA1, DES,
так далее). Я не хочу хранить таблицу хешей: я хочу расшифровать
имя файла с простым ключом, который я запомнил.
Мои собственные попытки с такими вещами, как "mcrypt -b", тоже не увенчались успехом:
выход (даже до преобразования в ASCII) очень быстро увеличивается в размере
увеличение имени файла и длины ключа.
Обоснование: я планирую использовать службу «бесконечного резервного копирования» (например, mozy,
Blazebackup и т. д.), но ни одно из них не шифрует имена файлов (только файл
содержание). Я создам каталог, который состоит из зашифрованных имен файлов
с символическими ссылками (или даже жесткими ссылками) на реальный файл. Я только резервную копию
этот каталог (и выбрать мой собственный закрытый ключ), и иметь
резервные копии, зашифрованные с именами файлов и с содержимым файлов.
РЕДАКТИРОВАТЬ: метод Пити работал как шарм!
# "-b 512" yields "Bits has bad value 512 (too small)"
ssh-keygen -t rsa -b 768 -f /tmp/test.rsa
echo "thisisareallylongfilenameknightswhosayniioratleastusedto" |\
openssl rsautl -inkey /tmp/test.rsa -encrypt | base64 |\
perl -0777 -pnle 's/\//-/isg;s/\n//isg'
возвращает результат в 130 символов, который всегда должен быть именем файла!