📄 readme
字号:
********************************************************************************* ** R S A - Verfahren ** *********************************************************************************Die Schluessel-Generierung laeuft in 2 Stufen ab.A) Es muessen 2 Primzahlen mit genprim berechnet werden. Die Groessenordnung dieser Zahlen sollte 80-130 sein, und sich um eine unterscheiden. Diese Zahlen muessen in einer Datei, mit einem beliebigen Trennzeichen (z.B. '#') dazwischen, abgelegt werden. Alle Zahlen werden als Hexadezimalzahlen (fuer Puristen: Sedizimal :-) ein-/ausgegeben. Bei Ein-/Ausgabe sind White-Spaces (Blank,Tab,Newline) nicht signifikant. Der zweite Parameter von genprim gibt die Wahrscheinlichkeit an, mit der die gefundene Zahl wirklich eine Primzahl ist. Fuer eine Parameter n ist die Wahrscheinlichkeit 1-0.5^n. Fuer n=20 ist ein Programierfehler von mir schon wahrscheinlicher :-). Das der Test nur probabilistisch ist, verringert bei vernuenftiger Wahl von n die Aussagekraeftigkeit nur unwesendlich.B) Genrsa generiert daraus eine Datei mit oeffendlichem/geheimen Schluessel. Diese Datei enthaelt 3 Zahlen. Aus dieser Datei gewinnt man die geheime, in dem man die letzte Zahl (mit Trenn- zeichen) entfernt. Den oeffendlichen erhaelt man duch Entfernung der zweiten Zahl.Beispiel: $ genrsa 10 20 >p1 # erste Primzahl $ cat p1 2023A0B0BE5 $ genrsa 11 20 >p2 # zweite Primzahl $ cat p2 537A985EC975 $ echo "#" | cat p1 - p2 >pd # Eingabe fuer genrsa $ genrsa <pd >rd # Alle Zahlen fertig $ cat rd A7AF134EFB73D789793CA9 # 9245F9009636D26B7CA5ED # 80F408891D5932D10C2585Dieses File rd muss man auf 2 Files verteilen: $ cat geheim A7AF134EFB73D789793CA9 # 9245F9009636D26B7CA5ED $ cat oeffendlich A7AF134EFB73D789793CA9 # 80F408891D5932D10C2585Die Dateien p1,p2,pd und rd sollte man schnell wieder loeschen. $ rsaencode oeffendlich <data >crypt # Verschluesseln $ rsadecode geheim <crypt >clear # EntschluesselnDie Verschluesselung laeuft in Bloecken ab, deren Groesse von der derersten Zahl des Schluessels Abhaengt. Alle Bloecke werden als binaereDaten behandelt. Allerdings wird beim Entschluesseln der letzte Blockmit ASCII-NULL aufgefuellt. Dieses ist kein Fehler des RSA-Verfahrens,sondern liegt an meiner Verwendung. Das RSA-Verfahren verschluesselteinfach Zahlen. Meiner Umwandlung von Daten in Zahlen ist das Mankoanzulasten. Deshalb muss auch der verschluesselte Text mit btoa oderaehnlichem mailbar gemacht werden. Zur Reduktion der Blockanzahl kannman natuerlich vorher den Text compressen, da er sowieso binaer behandeltwird.Bei mir (386-er mit 20 MHz) dauert die Ver-/Entschluesselung einesBlocks (aus 125 & 124 stelliger Primzahl) 20 Minuten !!!!!!Dafuer laeuft die Primzahlberechnung in 1-20 Stunden ab :-) !!!!!Das haengt von dem zufaelligen Startpunkt der Suche ab.Wer Lust hat, die Verschluesselung so zu modifizieren, dass nur einBlock mit RSA verschluesselt wird, und alle anderen, mit einem darinuebergebenen weiteren Schuessel, mit DES zu verschluesseln, der istherzlich eingeladen ein solches Programm analog rsa.c zu erstellen.Die eigendliche Verschluesselung ist mit den Routinen aus arith.ctrivial. Es kostet allerding Zeit :-).Als Warnung fuer Leute, die mit den Routinen arbeiten wollen:Alle Routinen sind auf Laufzeit optimiert, und enthalten fast keineUeberpruefungen auf Ueberlauf o.ae. . Wenn ein Fehler entdeckt wird(was selten ist :-), gibts eine core. Alle Zahlen muessen >= 0 sein.Mein Wissen ueber RSA und die anderen verwendeten Verfahren hab ichaus: Horster, Patrick: Kryptologie / von Patrick Horster. - Mannheim; Wien; Zuerich: Bibliographisches Institut, 1985. (Reihe Informatik; 47) ISBN 3-411-03106-9 NE: GTMartin Nicolay ( martin@trillian.megalon.de )Fliederstr. 234100 Duisburg 1W-GermanyPS: Falls rand.h nicht vorhanden ist: darin sind nur die Funktionen wie drand48 usw. deklariert.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -