PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : opensource Verschlüsselungsprojekt



Free Faq
25.07.2003, 18:28
Hatte in einer schlaflosen Nacht eine Idee, für ein gutes (oder halt nicht) Verschlüsselungsprogramm! Es ist in Perl programmiert.
Und mich würde mal eure Meinung interessieren!
Hab die Frage in mehreren Foren gestellt, aber bis jetzt keine wirklich brauchbaren Meinungen gehört! Da das Forum eine extra Sektion über dieses Thema hat, denke ich das ich hier mehr Lob/Kritik/ Vorschläge bekomme :)
Also hier das opensourcescript (Nur Beta! Wenn es gut ist, werde ich es ausbauen!):


use Math::BigInt;


$Secret = '';
$Pw = '';


### Verschlüsseln


@a1 = unpack("C*", $Secret);
@b1 = unpack("C*", $Pw);

foreach (0..$#a1) {
$a2 = sprintf "%b ", $a1[$_];
$a3 .= sprintf "%0.8d", $a2;
}
foreach (0..$#b1) {
$b2 = sprintf "%b", $b1[$_];
$b3 .= sprintf "%0.8d", $b2;
}
$a4 = length($a3);
$b4 = length($b3);

foreach (0..$a4) {
push(@a5, substr($a3,$_,1));
}
foreach (0..$b4) {
push(@b5, substr($b3,$_,1));
}

$a6 = 1;
$b6 = 1;

foreach (0..$#a5) {
if ($a5[$_] == 1) {
$a7 = Math::BigInt->new($a7 +$a6);
}
$a6 = Math::BigInt->new($a6 *2);
}
foreach (0..$#b5) {
if ($b5[$_] == 1) {
$b7 = Math::BigInt->new($b7 +$b6);
}
$b6 = Math::BigInt->new($b6 *2);
}

$c1 = Math::BigInt->new($a7 *$b7);

print "Geheimer Text:\n$Secret\nGeheimer Text verschlüsselt:\n$c1\n";


Hier mal ein Beispiel eines verschlüsselten Textes:


24649059559914228040074776339397578491076898909796 42901363362503969659329680495593360307472807365225 77130434425259941585908705668296525932467390540561 11785649319942739646954034334033424596012200058461 28677055347042724237508785119532988597232025113732 92957789747303619953336196404829469792235739626502 57873461487825475839095853826666841589420784159414 645603132446417676

Zeilenumbrüche ignorieren! Hab ich nur gemacht, um das Forum nicht zu verunstalten!
Werde das Script später noch erweitern, damit der verschlüsselte Text nurnoch halb so gross wird! ;) Also was haltet ihr davon?

triton
25.07.2003, 21:33
Erst mal solltest Du beschreiben wie Deine Verschlüsselung funktioniert.
Perl eignet sich hierfür nicht.
Und außerdem, wie entschlüsselt man mit Deinem Programm?

Kuno
25.07.2003, 22:05
Original geschrieben von triton
Erst mal solltest Du beschreiben wie Deine Verschlüsselung funktioniert.
Perl eignet sich hierfür nicht.
Und außerdem, wie entschlüsselt man mit Deinem Programm?
wieso ist perl für sowas ungeeignet?

Free Faq
25.07.2003, 22:57
use Math::BigInt;


$Secret = ''; # Zu Verschlüsselnder Text
$Pw = ''; # Passwort zum verschlüsseln


### Verschlüsseln


@a1 = unpack("C*", $Secret); # Umformen von Zeichen in Zahlen
@b1 = unpack("C*", $Pw);

foreach (0..$#a1) {
$a2 = sprintf "%b ", $a1[$_]; # Zahlen in Binärsystem umwandeln
$a3 .= sprintf "%0.8d", $a2; # Gegebenenfalls auf 8 Zahlen erweitern mit Nullen und zu einer Variable zusammenfügen
}
foreach (0..$#b1) {
$b2 = sprintf "%b", $b1[$_];
$b3 .= sprintf "%0.8d", $b2;
}
$a4 = length($a3); # Länge der Variable herausfinden
$b4 = length($b3);

foreach (0..$a4) {
push(@a5, substr($a3,$_,1)); # $Variable splitten und zwar nach jeder Zahl
}
foreach (0..$b4) {
push(@b5, substr($b3,$_,1));
}

$a6 = 1;
$b6 = 1;

foreach (0..$#a5) {# Schleife geht alle Nullen uns Einsen durch
if ($a5[$_] == 1) {
$a7 = Math::BigInt->new($a7 +$a6); # aktuelle Potenz wird mit $a7 addiert
}
$a6 = Math::BigInt->new($a6 *2); # $a6 wird bei jedem Schleifendurchlauf mit 2 Potenziert
}
foreach (0..$#b5) {
if ($b5[$_] == 1) {
$b7 = Math::BigInt->new($b7 +$b6);
}
$b6 = Math::BigInt->new($b6 *2);
}

$c1 = Math::BigInt->new($a7 *$b7); # Einmaliger Passwort "Hash" wird mit dem einmaligen Text "Hash" multipliziert.

print "Geheimer Text:\n$Secret\nGeheimer Text verschlüsselt:\n$c1\n";




Perl eignet sich hierfür nicht.

--> Schwachsinn! Alle Sprachen die Rechnen können snid geeignet!

Entschlüsseln soll hier NOCH nicht das Problem sein. Entschlüsseln geht! Keine SOrge ;)

triton
26.07.2003, 02:48
Original geschrieben von Free Faq
--> Schwachsinn! Alle Sprachen die Rechnen können snid geeignet!


Es ging nicht um die Verschlüsselung, sondern um die Beschreibung des Algorithmus.
Nicht jeder beherrscht Perl und die, die es nicht können werden es wahrscheinlich nicht lernen nur um deinen Algorithmus zu evaluieren.
Es liegt schliesslich in deinem Interesse, dass sich möglichst viele Leute das Teil anschauen.

In diesem Zusammenhang: Memo to the Amateur Cipher Designer
http://www.counterpane.com/crypto-gram-9810.html

Smartie
26.07.2003, 11:40
http://buhaboard.de/showthread.php?s=&threadid=27119
hier das memo auf deutsch.

foppi
26.07.2003, 12:14
foreach (0..$#a5) {# Schleife geht alle Nullen uns Einsen durch
if ($a5[$_] == 1) {
$a7 = Math::BigInt->new($a7 +$a6); # aktuelle Potenz wird mit $a7 addiert
}
$a6 = Math::BigInt->new($a6 *2); # $a6 wird bei jedem Schleifendurchlauf mit 2 Potenziert
}

Das codiert doch einfach nur den Text als grosse Zahl oder seh ich das falsch?

Wodurch sich dein Algorithmus auf das multiplizieren zweier grosser Zahlen reduziert...

Free Faq
26.07.2003, 13:56
Wodurch sich dein Algorithmus auf das multiplizieren zweier grosser Zahlen reduziert...

Ja und?

Exekutor
26.07.2003, 16:40
Hi,
es wäre echt nicht schlecht wenn du deinen Algorithmus ohne Perl beschreiben könntest.
Versuchs halt einfach mal, wenn du willst, dass man dir hier hilft, solltest du uns auch etwas entgegenkommen.

Smartie
26.07.2003, 17:52
sonst könnte man wohl annehmen, du hast ihn irgendwoher kopiert. ;)

Free Faq
26.07.2003, 18:05
Eigentlich ist das Script so simpel, aber egal:
1. Werden die Zeichen des Passwortes und des Textes in eine Zahl umgewandelt (0 bis 255).
2. Die Zahlen werden dann einzeln in Binärcode umgewandelt und gegebenenfalls mit Nullen auf 8 Zeichen erweitert.
3. Die Binärcodes werden der Reihe nach zusammengefügt!
4. Der grosse Binärcode wird in einzelne Zeichen geteilt.
5. Nun geht eine Schleife alle einzelnen Zahlen des Binärcodes durch und rechnet eine Temporäre Datei immer mal 2! Nun wird jedesmal wenn die aktuelle Zahl des Binärcodes eine 1 ist die Temporäre Datei mit einer weiteren Variabel addiert.

Bis jetzt gelten alle Punkte für den Text und das Passwort.

6. Die Zahl des Textes und die Zahl des Passwortes werden addiert.

Grösste Nachteil wären grosse Texte! Ich muss mir was einfallen lassen, da das Script nciht für grössere Texte geeignet ist