Cet alias vous montre le principe de l'algorithme de cesar.
Quesque cet algo ?
C'est l'un des plus ancien algorithme de chiffrage par substitution.
Cet algorithme est attribué à Jules César qui l'utilisait selon la légende pour communiquer avec ses généraux sans que le messager ne puisse connaître le message réel.
Il consiste à décaler chaque lettre dans l'alphabet d'une certaine quantité. La clé c'est le nombre de décalage. Celui qui connaît l'algorithme et le nombre de décalage peut chiffrer, celui qui connaît le nombre de décalage peut déchiffrer. Mais il est très facile à casser car il n'y a que 26 clés possibles.
Source / Exemple :
;#############################
;/* Algorithme Cesar
;/* By Sorn_Drixer
;/* crée le 11/12/03
;/* Utilisation : //echo -a $cesar(cle,msg)
;/*
;#############################
alias cesar {
if (!$1) || (!$2-) { halt }
var %a = $gettok($2-,0,32)
var %a2 = 0
while (%a > %a2) {
inc %a2 1
var %a3 = %a3 $+ $chr(32) $+ $cesar.conv($gettok($2-,%a2,32),$1)
}
return %a3
}
alias alphajump {
if (!$1) || (!$2) { halt }
var %tmp = 0
var %cesar.1 = a
var %cesar.2 = b
var %cesar.3 = c
var %cesar.4 = d
var %cesar.5 = e
var %cesar.6 = f
var %cesar.7 = g
var %cesar.8 = h
var %cesar.9 = i
var %cesar.10 = j
var %cesar.11 = k
var %cesar.12 = l
var %cesar.13 = m
var %cesar.14 = n
var %cesar.15 = o
var %cesar.16 = p
var %cesar.17 = q
var %cesar.18 = r
var %cesar.19 = s
var %cesar.20 = t
var %cesar.21 = u
var %cesar.22 = v
var %cesar.23 = w
var %cesar.24 = x
var %cesar.25 = y
var %cesar.26 = z
while (26 > %tmp) {
inc %tmp 1
if (%cesar. [ $+ [ %tmp ] ] == $1) {
if ($calc(%tmp + $2) > 26) { return %cesar. [ $+ [ $calc($calc(%tmp + $2) - 26) ] ] }
return %cesar. [ $+ [ $calc(%tmp + $2) ] ]
}
}
}
alias cesar.conv {
if (!$1-) || (!$2) { halt }
;###/Variable à incrémenter plus tard\###
var %cesar.tmp1 = 0
;###/Texte && cle\###
var %cesar.txt = $1
var %cesar.key = $2
;###/Alphabet en variable\###
var %cesar.1 = a
var %cesar.2 = b
var %cesar.3 = c
var %cesar.4 = d
var %cesar.5 = e
var %cesar.6 = f
var %cesar.7 = g
var %cesar.8 = h
var %cesar.9 = i
var %cesar.10 = j
var %cesar.11 = k
var %cesar.12 = l
var %cesar.13 = m
var %cesar.14 = n
var %cesar.15 = o
var %cesar.16 = p
var %cesar.17 = q
var %cesar.18 = r
var %cesar.19 = s
var %cesar.20 = t
var %cesar.21 = u
var %cesar.22 = v
var %cesar.23 = w
var %cesar.24 = x
var %cesar.25 = y
var %cesar.26 = z
while ($len(%cesar.txt) > %cesar.tmp1) {
inc %cesar.tmp1 1
var %cesar.fin = %cesar.fin $+ $alphajump($left($mid(%cesar.txt,%cesar.tmp1),1),%cesar.key)
}
if ($len(%cesar.txt) == %cesar.tmp1) { return %cesar.fin | unset %cesar.* }
}
Conclusion :
Copiez/collez ce code dans vos remotes (ALT + R), puis pour tester, tapez :
//echo -a $cesar(cle,message)
cle étant un nombre compris entre 1 et 26, et message, une phrase. ( sans caractère spéciaux, accent, virgule etc.. , alpha numérique et espace uniquement )
Exemple : //echo -a $cesar(8,mais c super)
Retournera : uiqa k acxmz
Pour décrypter : //echo -a $cesar(18,uiqa k acxmz)
Retournera : mais c super
Pourquoi 18 ? Car 26 ( le nombre de lettres dans l'alphabet ) - 8 ( la clé par laquelle nous avons crypté précédemment )
Voila, je crois avoir tout dis.
Cet alias n'est pas spécialement utile, mais pourra vous être instructif.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.