možda da probaš xor sa ključem ili nešto slično!
Evo kako sam ja to izveo u perlu sa xor:
#!/usr/bin/perl
use strict;
print "Enkripcija/Dekripcija tekstualnih fileova\n";
if (@ARGV) {
$_ = $ARGV[0];
} else {
print "input > ";
$_ = <STDIN>;
}
chomp $_;
if (-e and -f) {
open INFILE, $_ or die "$_: $!";
my $nastavak;
if (/\.enc$/) {
$nastavak = "";
/(.+)\.enc/;
$_ = $1;
} else {
$nastavak = ".enc";
}
open OUTFILE, ">$_$nastavak" or die "$_.enc: $!";
} else {
print "Takav file ne postoji!\n";
exit;
}
print "key > ";
my $key = <STDIN>;
chomp $key;
my $i;
until (eof INFILE) {
read (INFILE, my $byte, 1);
my $keybyte = substr($key, $i++, 1);
if ($i >= length($key)) {
$i = 0;
}
my $code = &XOR(&BIN($byte), &BIN($keybyte));
print OUTFILE chr(&DEC($code));
}
close INFILE;
close OUTFILE;
sub BIN: {
my $broj = ord($_[0]);
my @digits;
while ($broj >=1) {
if ($broj/2 == int($broj/2)) {
push @digits, '0';
} else {
push @digits, '1';
}
$broj = int($broj/2); #/
}
my $digits = join "", reverse @digits;
return $digits;
}
sub DEC {
my $n = $_[0];
my @n = reverse split //, $n;
my $a = 0;
foreach (0..$#n) {
$a += $n[$_]*(2**$_);
}
return $a;
}
sub XOR: {
(my $a, my $b) = @_;
$a = substr("00000000$a",-8,8);
$b = substr("00000000$b",-8,8);
my $rez = '';
for (0..7) {
my $a_byte;
my $b_byte;
if (int(substr ($a, $_, 1)) == 1) {
$a_byte = 1;
} else {
$a_byte = 0;
}
if (int(substr ($b, $_, 1)) == 1) {
$b_byte = 1;
} else {
$b_byte = 0;
}
$rez .= ($a_byte xor $b_byte) ? 1:0;
}
return $rez;
}
samo što kad sifriram neki file koji nije .txt(ili neki drugi čisto tekstualni file) dobijem s***** poslje desifriranja!
kung-fu