.| Autor | Beitrag |
|---|---|
|
000 31.10.2002, 13:56 apfelkorn |
Also, ich sitze zur Zeit an einer Implementation des RSA-Algorithmus und dazu ist es notwendig, das ich mit Primzahlen der Größenordnung zwischen 1024 und 4096 Bit (also zwischen 128 und 512 Byte) rechnen muss. Jetzt wollte ich mal fragen, ob hier jemand vielleicht Ideen hat, wie man so etwas theoretisch anstellen kann. Da gäbe es Beispielsweise die Möglichkeit einen Array von 512 ( eventuell + 2 Byte für die Angabe der Verwendeten Stellen ) Byte anzulegen und mit diesem Array die Grundrechenoperationen auszuführen. (Das ganze wird nicht in C geschrieben, daher kann ich keine Bitshiftoperatoren einsetzen) Hat jemand eine bessere Idee, oder kann mir jemand einen Denkanstoss geben, wie ich damit rechnen kann? -- |
|
Profil || Suche |
|
001 31.10.2002, 14:15 CorDharel |
[offtopic] Greetz CorDharel Leader der HolyShitBastards |
|
Profil || Suche |
|
002 31.10.2002, 14:18 apfelkorn |
bitte beim thema bleiben. Mir ist das recht wichtig... -- |
|
Profil || Suche |
|
003 31.10.2002, 14:28 Prefect |
Du solltest dich an die Grundschule zurückerinnern ;p cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
004 31.10.2002, 15:22 [RMen]OneStone |
Wenn du uns eine Sprache sagst, können wir dir ja vielleicht auch mehr helfen. In Java zm Beispiel gibt es schon eine BigInteger. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
005 31.10.2002, 15:32 hausi |
Und ich habe für Delphi mal eine Klasse für 128Bit Zahlen geschrieben. Könnte man auch umschreiben (falls es für Delphi ist ;)). -- |
|
Profil || Suche |
|
006 31.10.2002, 19:14 apfelkorn |
nee, ich will nicht soviel verraten, da es für eine facharbeit ist, wo man ja bekannterweise möglichst viel selber erarbeiten soll. Gibt es denn noch andere Möglichkeiten mit solchen Zahlen umzugehen? -- |
|
Profil || Suche |
|
007 31.10.2002, 21:27 Prefect |
Also, die verwendete Sprache wirst du ja auch wohl bei ner Facharbeit "verraten" können... cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
008 31.10.2002, 21:31 Dein-Zahnarzt |
also vom programmieren hab ich verdammt wenig checkung aber wenns dir hilft. ich hab nen prog das kann riesege datein öffnen (bis zu 2GB) hat ja auch was mit größe zu tun vieleicht kann dir das helfen. Die Lösung aller Eurer Probleme: |
|
Profil || Suche |
|
009 31.10.2002, 22:25 hausi |
@Zahnarzt: Hat leider nix damit zu tun. |
|
Profil || Suche |
|
010 01.11.2002, 18:04 apfelkorn |
err... ich wollte ja nur frage, ob einer noch eine idee hat, wie man sowas bewerkstelligen könnte, rein theoretisch nur ansatzweise. Ausarbeiten würde ich es ja eben. Der Grund, warum ich nicht die Programmiersprache poste ist, das ich Angst habe, dass dann ein nettgemeinter Rat kommt, der mir zuviel vorwegnimmt, und dann wäre das ganze für die katz... Ist bescheuert, aber blöderweise tatsächlich so wahr. @Hausi: Theoretisch schon, aber ich kenn mich nicht mit asm so gut aus, und das muss ja von mir ausgearbeitet werden. Also nützen tut mir nur reine Theorie... -- |
|
Profil || Suche |
|
011 01.11.2002, 18:37 hausi |
Ok: [Edit] Dieser Beitrag wurde am 01.11.2002 um 18:39 von Superhausi bearbeitet. |
|
Profil || Suche |
|
012 01.11.2002, 18:40 [RMen]OneStone |
Du solltest es wie Prefect machen und einen byte (char) Array machen, indem jeder byte eine Ziffer in einem 256iger Zahlensystem represäntiert. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
013 02.11.2002, 10:03 apfelkorn |
naja, danke, hausi... @OneStone: |
|
Profil || Suche |
|
014 03.11.2002, 23:22 Nicemice Moderator |
Also ich würd so machen: www.d3opencoop.com - A Doom3 Cooperative Mod |
|
Profil || Suche |
|
015 04.11.2002, 12:51 Prefect |
Linked List ist viel zu aufwendig und Speicherverschwendung. In diesem Fall ist ein (womöglich dynamisches) Array sicher besser. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
016 04.11.2002, 14:04 Nicemice Moderator |
Erklär mal, wieso ein dynamisches Array weniger Speicher benötigt als eine verkette Liste. --www.d3opencoop.com - A Doom3 Cooperative Mod |
|
Profil || Suche |
|
017 04.11.2002, 14:37 apfelkorn |
ich hab mich übrigens inzwischen dazu entschieden einen byte-array zu nutzen in dem jeweils werte von 0 - 255 ( logisch, byte halt ) gespeichert werden, was von hinten nach vorne abgespeichert wird. Addition, Multiplikation und Subtraktion ist schon klar, aber wie dividiere ich? -- |
|
Profil || Suche |
|
018 04.11.2002, 16:50 [RMen]OneStone |
Weil jedes Element der verketteten Liste einen Pointer auf das nächste Element enthält -> 4 byte mehr pro Element. BTW @ Apfelkorn: -- georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ Dieser Beitrag wurde am 04.11.2002 um 16:52 von [RMen]OneStone bearbeitet. |
|
Profil || Suche |
|
019 04.11.2002, 20:54 Prefect |
Bei der Linked List kommt auch noch die Heapfragmentation dazu. Apfelkorn: Division durch Zahlen mit nur einer "Ziffer" sollte klar sein. Für die Division durch beliebig große Zahlen hab ich jetzt aber auch keine Lösung parat. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
020 12.11.2002, 14:05 the_viking |
@Superhausi: MyInt ist also ne struct mit byte *data ? Wie macht man das? (Ich suche auch na so einer große-Zahlen möglichkeit, für Primzahlen.Berechnung in C/C++, nach dem Motto "ICH FINDE DIE GRÖßTE PRIMZAHL!!!!". Am besten gleich ausdrucken *g*) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
021 12.11.2002, 14:26 Prefect |
Das macht man genauso, wie man es bei normalen Zahlen auch macht: Schrittweise durch die Basis dividieren, den Rest anzeigen und das Ergebnis im nächsten Schritt verwenden. (Hinterher mußt du natürlich noch die Reihenfolge der Ziffern umdrehen, da sie in der falsche Reihenfolge herauskommen). Ein alternatives System mit nicht ganz so vielen Divisionen bestünde darin, statt Ziffern mit Basis 2^32 Ziffern mit der Basis 10^9 zu verwenden (ein int pro Ziffer). Da verschwendet man dann zwar etwas Speicherplatz, aber man kann immer schön gemütlich 9 Basis-10-Ziffern auf einmal ausgeben, ohne umständliche Divisionen durchzuführen. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |

