71 votes

En : <h2>using rot13 and tr command for having an encrypted email address</h2> fr: <h2>en utilisant la commande rot13 et tr pour avoir une adresse e-mail cryptée</h2>

J'ai lu de nombreux tutoriels sur internet concernant l'utilisation de la commande 'tr'. Cependant, je ne parviens pas à comprendre comment crypter une adresse e-mail avec un script shell en décalant les caractères en utilisant rot13. Est-ce que quelqu'un peut me donner un lien ou un exemple?

1 votes

Tutorial de la commande "tr" sur Wikipedia. en.wikipedia.org/wiki/Tr_%28Unix%29

123voto

samullen Points 508

Je ne suis pas sûr de comment vous voulez utiliser ceci exactement, mais voici un exemple de base pour vous aider à démarrer :

echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'

Pour simplifier, vous pouvez aliaser la commande tr dans votre fichier .bashrc de cette manière :

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"

Maintenant vous pouvez simplement appeler :

echo 'fooman@example.com' | rot13

0 votes

Est-il nécessaire d'utiliser a-z comme SET 1 et n-za-m comme set2 peut-il être utilisé d'une autre manière ? Je veux dire a-z p-z-a-q set2

9 votes

Toute autre combinaison ne serait pas rot 13 ;-)

1 votes

De plus, si vous souhaitez rot13 les chiffres (ce qui n'est pas le rot13 traditionnel, car il ne s'applique qu'aux lettres), vous pouvez ajouter 0-9 à SET1 et 3-90-2 à SET2.

22voto

Charlie Ross Points 173

Une tâche parfaite pour tr, en effet. Cela devrait faire ce que vous voulez :

tr 'A-Za-z' 'N-ZA-Mn-za-m'

Chaque caractère dans le premier ensemble sera remplacé par le caractère correspondant dans le deuxième ensemble. Par exemple, A remplacé par N, B remplacé par O, etc. Et puis la même chose pour les lettres minuscules. Tous les autres caractères seront transmis inchangés.

Notez l'absence de [ et ] là où vous vous y attendriez normalement. Cela est dû au fait que tr traite littéralement les crochets, non pas comme des expressions de plage. Donc, par exemple, tr -d '[A-Z]' supprimera les lettres majuscules et les crochets. Si vous voulez conserver vos crochets, utilisez tr -d 'A-Z':

$ echo "foo BAR [baz]" | tr -d '[A-Z]'
foo  baz
$ echo "foo BAR [baz]" | tr -d 'A-Z'
foo  [baz]

C'est la même chose pour les classes de caractères. Par exemple, tr -d '[[:lower:]]' est probablement une erreur, et devrait être tr -d '[:lower:]'.

Cependant, dans des situations chanceuses comme celle-ci, vous pouvez vous en sortir en incluant quand même les crochets ! Par exemple, tr "[a-z]" "[A-Z]" fonctionne accidentellement car les crochets du premier ensemble sont remplacés par des crochets identiques du deuxième ensemble, mais en réalité, c'est une mauvaise habitude à prendre. Utilisez plutôt tr "a-z" "A-Z".

10voto

kurumi Points 10096

Ruby(1.9+)

$ ruby -ne 'print $_.tr( "A-Za-z", "N-ZA-Mn-za-m") ' file

Python

$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")'

0 votes

L'exemple Python concerne uniquement Python 2. Python 3 est devenu plus strict concernant les chaînes binaires par rapport aux chaînes Unicode et 'rot13' est un exemple rare de "codec" de chaîne à chaîne.

10voto

sjas Points 3175

Pour faire simultanément du ROT13 (pour les lettres) et du ROT5 (pour les chiffres) :

tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

utilisation :

echo test | tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

définition d'alias pour votre ~/.bashrc au cas où vous en auriez besoin plus souvent :

alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"

(exactement rot135 ou rot18)

6voto

JimmyLandStudios Points 349

# Transformations réciproques

# rot13
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< 'user@domain.com'

# rot13.5 (rot18)
tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4' <<< 'user123@domain.com'

# rot47
tr '\!-~' 'P-~\!-O' <<< 'user123@domain.com'

# rot13 -- SED anyone
echo 'user@domain.com' | sed y/NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/

Script Shell

#!/bin/bash
# Objectif: Faire tourner de 13 caractères (une transformation réciproque)

# ./rot13.sh 'Une chaîne à chiffrer'
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "$1"

exit $?

0 votes

commande man tr si vous avez GNU coreutils, ou man.jimmylandstudios.xyz/?man=tr

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X