Les paradis artificiels

Xifratge de Cèsar

Perl, Criptografia — 12 Agost 2009, 10:19

El xifratge de Cèsar, o Caesar cipher en anglès, és un senzill xifrat de substitució en què cada lletra de l'alfabet es substitueix per una altra situada a tres posicions de distància. Així, la A es substitueix per la D, la B per la E, la Y per la B i la Z per la C. Es pot expressar fàcilment substituint cada lletra per la seva posició (A=1, B=2, etc.) i sumant-li 3 mòdul 26. Per desencriptar n'hi ha prou amb restar 3 a cada lletra. El xifrat no és segur, es pot trencar fàcilment amb un anàlisi de freqüència de les lletres del text xifrat.

De totes maneres, per aprofitar a trastejar una mica amb el Perl i aprendre alguna cosa he fet un petit script que permet encriptar i desencriptar text utilitzant el xifratge de Cèsar, o l'equivalent desplaçant un altre número de posicions. Com que és molt curt, el poso directament aquí per si algú el troba interessant:

#! /usr/bin/perl -s

if ($h) {   print<<"INFO"; $0 - Caesar cypher Usage: $0 [-d] [NUM] Reads from stdin, outputs to stdout. NUM is the letter shift (default is 3). Use -d for decypher. INFO   exit 0; }
$f = $d ? -1 : 1; $s = shift; $s = 3 unless defined $s;
while (<>) {   y/a-z/A-Z/;   y/A-Z//dc;   $o .= $_; }
$o .= 'X' while length ($o)%5; $o =~ s/./chr((ord($&)-ord('A')+$f*$s)%26+ord('A'))/eg; $o =~ s/(.{5})/$1 /g; print "$o\n";

Powered by LifeType