ecco un'altro contest, che penso vi impegneràe non poco! XD
obiettivo: scrivere un cifrario simmetrico. (ovvero che non abbia chiavi di sorta)
ps. non limitatevi a uno XOR
ecco il mio codice:
encoder
decoder
funzionamento:
leggo il file carattere per carattere.
di ogni carattere ricavo il codice ascii.
trasformo questo codice in ottale.
aggiungo 111.
adesso, a seconda del numero ottenuto metto '+' intervallati da un singolo '-'
per esempio se il numero è 112 sarà+-+-++
oppure 341 diventa +++-++++-+
termino con due '-'
esempio:
ps. ho aggiunto degli 'a capo' casuali perchè altrimenti sballerebbe la grafica del forum
Gradirei che tutti quelli che non postano il proprio codice mettano il tutto nei tag ot...grazie! by R4z0r_Cr4$H
obiettivo: scrivere un cifrario simmetrico. (ovvero che non abbia chiavi di sorta)
- scrive due codici separati: encoder e decoder
- spiegare come funziona il cifrario
- il cifrario DEVE operare su file e non su stringhe
- non ci devono essere chiavi di sorta (es: rot13 oppure b64)
- postare un esempio con la stringa "The quick brown fox jumps over the lazy dog"
- cifrario di vostra invenzione!
- fine contest: 29/03/09 ore 12:00
ps. non limitatevi a uno XOR
ecco il mio codice:
encoder
Codice:
#!/usr/bin/perl;
# by Oromis92
# octcipher encoder
if (@ARGV < 1) {die "usage: $0 [input file] [>> output file]\n"} else {
while (<>) {
$str .= $_;
}
chomp $str;
@arr = split //, $str;
foreach (@arr) {
$_ = (sprintf("%O",ord($_)))+111;
@arr2 = split //, $_;
for $i (0..scalar(@arr2)) {
$aaa .= '+' x $arr2[$i] . '-';
}
print $aaa;
$aaa = '';
}
print $/;
}
decoder
Codice:
#!/usr/bin/perl
# by Oromis92
# octcipher decoder
if (@ARGV < 1) {die "usage: $0 [input file] [>> output file]\n"} else {
while (<>) {
$a .= $_;
}
undef $/;
$_ = $a;
$_ =~ y/- / /ds;
@yoda = map{ length } split;
while (@yoda) {
$_ = chr(oct((join('',splice(@yoda,0,3)))-111));
print $_;
}
}
funzionamento:
leggo il file carattere per carattere.
di ogni carattere ricavo il codice ascii.
trasformo questo codice in ottale.
aggiungo 111.
adesso, a seconda del numero ottenuto metto '+' intervallati da un singolo '-'
per esempio se il numero è 112 sarà+-+-++
oppure 341 diventa +++-++++-+
termino con due '-'
esempio:
Codice:
The quick brown fox jumps over the lazy dog
++-+++-+++++--++-++++++-+--++-+++++-++++++--+-+++++-+--++-+++++++-++--++-++++
+++-++++++--++-++++++-++--++-+++++-++++--++-++++++-++++--+-+++++-+--++-+++++-
+++--++-+++++++-+++--++-++++++-++++++++--++-+++++++-++++++++--++-++++++-++++
+++--+-+++++-+--++-+++++-+++++++--++-++++++-++++++++--++-++++++++-+--+-+++++-
+--++-++++++-+++--++-+++++++-++++++--++-++++++-++++++--++-+++++++-+--++-+++++
++-++++--+-+++++-+--++-++++++-++++++++--++-+++++++-+++++++--++-+++++-++++++--
++-+++++++-+++--+-+++++-+--++-+++++++-+++++--++-++++++-+--++-+++++-++++++--+-
+++++-+--++-++++++-+++++--++-+++++-++--++-++++++++-+++--++-++++++++-++--+-+++
++-+--++-+++++-+++++--++-++++++-++++++++--++-+++++-++++++++--+-+++++-+--
ps. ho aggiunto degli 'a capo' casuali perchè altrimenti sballerebbe la grafica del forum
Gradirei che tutti quelli che non postano il proprio codice mettano il tutto nei tag ot...grazie! by R4z0r_Cr4$H