sviluppare un programma che effettui la codifica di un testo arbitrario secondo il metodo ARC4
potete usare questo per documentarvi:
http://www.quequero.org/RC4_Analysis_and_Cryptanalysis
(non copiate il codice :evil: )
ecco la mia soluzione in.... indovinate un pò?
potete usare questo per documentarvi:
http://www.quequero.org/RC4_Analysis_and_Cryptanalysis
(non copiate il codice :evil: )
ecco la mia soluzione in.... indovinate un pò?
Codice:
#!/usr/bin/perl -s
# coded by Oromis92
# <[email protected]>
$key = shift or die
"usage: perl $0 [-d] <key> [infile [>> outfile]]\n";
while (<>) {
$plain .= $_;
}
chomp($plain);
@key = split //,$key;
@plain = split //,$plain;
for
($i=0;$i<length($key);$i++) {
$key[$i]=ord($key[$i]);
}
@S = 0..255;
foreach $i (0..255)
{
$K[$i]=$key[$i%($#key+1)];
}
sub KSA {
$j=0;
for ($i=0;$i<255;$i++){
$j = ($j + $S[$i] + $K[$i])%256;
$temp = $S[$i];
$S[$i] = $S[$j];
$S[$j] = $temp;
}
}
sub PRGA {
$i = 0;
$j = 0;
for ($count=0;$count<length($plain);$count++) {
$i = ($i +
1)%256;
$j = ($j + $S[$i])%256;
$temp = $S[$i];
$S[$i] = $S[$j];
$S[$j] = $temp;
$t = ($S[$i] +
$S[$j])%256;
if (!$d) {
$output = sprintf('%X', ($S[$t] ^
ord($plain[$count])));
if (length($output) % 2 == 0) {
$result .= $output;
} else {
$output .= "0" ;
$result .= $output;
$output = "";
}
} else {
if
($count*2 < length($plain)) {
$output = chr($S[$t] ^
(hex(substr($plain,($count*2),2))));
$result .= $output;
$output = "";
}
}
}
print
"$result\n";
}
KSA;
PRGA;