Cryptage avec un endomorphisme involutif

Contenu du snippet

L'usage des involution peut avoir de nombreux interets. Par exemple en avoir une en cryptage permet de n'utiliser qu'une seule fonction pour coder et decoder

Ici j'utilise la transposée matricielle comme involution. C'est un cryptage simple , mais qui peut derouter au début. L'interet de ce code est que plus la phrase est longue plus le cryptage est performant.

Source / Exemple :


alias -l involution {
  var %i = 1 , %i0 = 1 , %i1 = 1 , %i2 = 1 , %i3 = 1 
  hadd -m crypte max 0
  while ($gettok($1-,%i,32)) { if ( $len($ifmatch) > $hget(crypte,max) ) { hadd -m crypte max $ifmatch } | inc %i }
  while ($gettok($1-,%i0,32)) {  hadd -m crypte m- $+ %i0 $ifmatch $+ $str($chr(1),$calc($hget(crypte,max) - $len($ifmatch))) | inc %i0 }
  while ( %i1 <= $hget(crypte,max) ) { 
    var %i2 = 1 
    while ( %i2 <= $gettok($1-,0,32) ) { hadd -m crypte t- $+ %i1 $hget(crypte,t- $+ %i1) $+ $mid($hget(crypte,m- $+ %i2),%i1,1) | inc %i2 } 
    inc %i1
  }
  while ( $hget(crypte,t- $+ %i3) ) { hadd -m crypte return $hget(crypte,return) $ifmatch | inc %i3 }
}

alias crypte_invo {
  if ( $hget(crypte).size > 0 ) { hfree crypte }
  hmake -m crypte 100
  $involution($1-)
  return $remove($hget(crypte,return),$chr(1))
}

Conclusion :


pour voir le code a l'oeuvre :

//echo -a $crypte_invo(votre phrase)

Comment ça marche ?
je prend une phrase quelconque
je la transforme en matrice ou chaque mot devient une ligne
je complete la matrice avec des zeros
je transpose la matrice
je dis que chaque ligne de la nouvelle matrice forme un mot
et je stoke le tout sous la forme d'une phrase que je retourne.

Je ne pense pas que ce code soit tres performant , je pense que quelqu'un de bien entraînné avec un bon niveau en math pourrait le casser sans trop de mal. Mais entre amis ou juste pour ne pas etre compris ce code peut etre utile. Et surtout il montre a quoi peut servir un cour d'algèbre.

On pourrait rendre le code plus puissant en transformant chaque lettre en sa valeur ascii ou jouer sur d'autre parametre, mais le bit est de montrer une involution.

A voir également

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.