Comment puis-je coder de manière réversible (symétrique) un nom de fichier (avec ou sans chemin de répertoire, je suis OK) afin que le résultat soit également un nom de fichier valide (moins que 64 caractères [ou quelle que soit la limite est], aucun caractères amusants, idéalement pas d'espaces [mais pas une exigence], etc)?Chiffrement de manière réversible des noms de fichiers afin que le résultat soit valide
recherche sur Google ne trouve que des algorithmes de chiffrement de nom de fichier où le résultat est une longue chaîne de caractères binaires (en utilisant MIME64, la conversion à non binaire est facile, mais cela fait juste le nom de fichier plus) et/ou un non-symétrique des schémas d'enchaînement (par exemple, MD5 salé, SHA1, DES, etc.). Je ne veux pas stocker une table de hachage: je veux déchiffrer le nom de fichier avec une simple clé que j'ai mémorisée.
Mes propres tentatives avec des choses comme « mcrypt -b » a échoué aussi: la sortie (même avant de convertir en ASCII) résultant grossit très rapidement le nom du fichier et l'augmentation de la longueur de clé.
Raisonnement: Je prévois d'utiliser une "sauvegarde infinie" le service (comme Mozy, blazebackup, etc.), mais les noms de fichiers ne encrypt (fichier juste contenu). Je vais créer un répertoire qui se compose de noms de fichiers cryptés avec des liens symboliques (ou même des liens physiques) vers le fichier réel. Je vais sauvegarder seulement ce répertoire (et choisir ma propre clé privée), et j'ai les sauvegardes chiffrées par un nom de fichier et chiffrées par le contenu.
EDIT: La méthode de Petey a fonctionné comme un charme!
# "-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'
donne un résultat de 130 caractères qui devrait toujours être un nom de fichier!
Attendez, je ne juste Chiffrer avec ma clé privée de sorte que tout le monde w/ma clé publique peut le lire? – barrycarter
C'est précisément le travail de [Format Preserving Encryption] (https://secure.wikimedia.org/wikipedia/en/wiki/Format_Preserving_Encryption). –
Cela semble vraiment intéressant. Existe-t-il une implémentation Linux open-source de l'une de ces méthodes? – barrycarter