Leser: 1
|< 1 2 3 >| | 24 Einträge, 3 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my @array;
sub readfile($){
open(DATEI, $_[0]);
my @Zeilen = <DATEI>;
close(DATEI);
my $length;
foreach my $zeile (@Zeilen){
$length = length $zeile;
for (my $i=0; $i<$length; $i++){
push(@array, substrg($zeile, $i, 1));
}
}
}
my $Zeichen = read(DATEI);
Quote
Wenn du auf Element 500 zugreifen willst, kannst du das einfach mit $array[499] tun, da musst du nichts durchlaufen.
Quotesag lieber was du erreichen willst hab das gefühl du hast ihr sehr grundlegenden irrtum drin
Quotewenn du allerdings ernsthaft verschlüsseln willst schau mal ins cpan für blowfish etc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/perl -w
use strict;
use warnings;
# Array mit Zeichen, die als Password genutzt werden
my @pass;
# Position in der Liste @pass
my $pass_pos = 0;
my $File;
my $CryptString;
my $StartTime;
my $StopTime;
my $Time;
#=== FUNCTION ================================================================
# NAME: readpass
# PURPOSE: ????
# DESCRIPTION: Liest eine Datei aus und benutzt sie als Password
# PARAMETERS: 1. Dateiname
# RETURNS: void
#===============================================================================
sub readpass($){
print "\nRead pass";
$StartTime = time;
my @Zeilen;
if ( -e $_[0]){
open(DATEI,$_[0]);
@Zeilen = <DATEI>;
close(DATEI);
}else{
print "\n\tDatei existiert nicht!! Dateiname wird als Passsword benutzt: $_[0]\n";
$Zeilen[0] = $_[0];
}
splice(@pass,0);
$pass_pos = 0;
foreach my $zeile (@Zeilen){
while (length $zeile > 0){
unshift(@pass, chop($zeile));
}
}
$StopTime = time;
print "\n\ttime: ".($StopTime - $StartTime);
$Time += $StopTime - $StartTime;
}
#=== FUNCTION ================================================================
# NAME: pass_getnext
# PURPOSE: ????
# DESCRIPTION: Liefert einen Pseudo-Random Zeichen zurück
# PARAMETERS: void
# RETURNS: Pseudo-Random Zeichen
#===============================================================================
sub pass_getnext(){
if ($pass_pos >= @pass){
$pass_pos = 0;
}
return ($pass[$pass_pos++]);
}
#=== FUNCTION ================================================================
# NAME: readfile
# PURPOSE: ????
# DESCRIPTION: Liest eine Datei aus und Speicher sie in Variable $File
# PARAMETERS: Dateiname
# RETURNS: void
#===============================================================================
sub readfile($){
print "\nRead file";
if (! -e $_[0]){
print "\n\tOriginal Datei ($_[0]) existiert nicht. Abbruch!\n";
exit;
}
$StartTime = time;
my $AnzahlBytes = -s $_[0];
open(DATEI,$_[0]) || die "Datei konnte nicht geoffnet werden: ".$_[0]."\n";
my $AnzahlZeichen = read(DATEI, $File, $AnzahlBytes);
close(DATEI);
$File = reverse($File);
$StopTime = time;
print "\n\ttime: ".($StopTime - $StartTime);
$Time += $StopTime - $StartTime;
}
#=== FUNCTION ================================================================
# NAME: cryptfile
# PURPOSE: ????
# DESCRIPTION: Verschlüsselt einen String ($File) und speichern es in $CryptString
# PARAMETERS: void
# RETURNS: void
#===============================================================================
sub cryptfile(){
print "\nCryptfile";
$StartTime = time;
# Position von Pseudo-Generator auf null setzen
$pass_pos = 0;
$CryptString = "";
my $rand;
while (length $File > 0){
$rand = pass_getnext();
$CryptString .= (chop($File) ^ $rand);
}
$StopTime = time;
print "\n\ttime: ".($StopTime - $StartTime);
$Time += $StopTime - $StartTime;
}
#=== FUNCTION ================================================================
# NAME: writefile
# PURPOSE: ????
# DESCRIPTION: Schreibt den String $CryptString in eine angegebene Datei
# PARAMETERS: Dateiname
# RETURNS: void
#===============================================================================
sub writefile($){
print "\nWrite file";
$StartTime = time;
open(DATEI,">".$_[0]);
print DATEI $CryptString;
close(DATEI);
$StopTime = time;
print "\n\ttime: ".($StopTime - $StartTime);
$Time += $StopTime - $StartTime;
}
#---------------------------------------------------------------------------
# Main-Function
#---------------------------------------------------------------------------
if (@ARGV != 3){
print "\nZu wenig Parameter!!\n";
print "\tParameter 1: Original Datei\n";
print "\tParameter 2: Password oder Dateiname mit Password\n";
print "\tParameter 3: Name für schifrierte Datei\n";
exit;
}
readpass($ARGV[1]);
readfile($ARGV[0]);
cryptfile();
writefile($ARGV[2]);
print "\nGesamtzeit: ".$Time;
1
2
3
use Benchmark qw(:all);
my $t0 = new Benchmark;
print "xy brauchte :", Benchmark::timestr( Benchmark::timediff( new Benchmark, $t0 ) ), "\n";
|< 1 2 3 >| | 24 Einträge, 3 Seiten |