Seite 1 von 2
Anfrage: Auftragsprogrammierung
Verfasst: 06.03.2006 11:03
von Kukulkan
Hallo,
Ich suche einen PB-Programmierer der mir ein Include liefert das folgende Funktionen erfüllt:
Berechnen eines 2048 Bit Diffie-Hellman Schlüsselaustausches
- Berechnen von Primzahlen bis 2048 Bit (Bereich)
- Berechnen von Zufallszahlen bis 2048 Bit
- Berechnen von Modulo über diese Zahlen
- Berechnen von PowerModulo dieser Zahlen
- Ein- und Ausgabe immer per HEX
- Kein Einsatz von fremd-DLL's oder Userlibrarys!
- Bitte zuverlässigen und gut kommentierten Code!
Es soll ein einzelnes Include sein. Ich benötige Varianten für PB 3.94 und PB4 (für später mal). Vorerst muss es auf Windows laufen (ab W2000).
Ich kann funktionierenden Code für beinahe alle diese Aufgaben als C- und VB-Code liefern. Ich hab nur nicht die Zeit und den Nerv das alles nach PB zu wandeln. Auch fehlt mir das KnowHow, das auf Speed zu optimieren (evtl. mit Inline-Assembler?).
Angebote mit Preis in EUR (netto) und Zeitschätzung bitte per PN! Anfragen zu Details beantworte ich gerne hier im Thread.
Volker
Re: Anfrage: Auftragsprogrammierung
Verfasst: 06.03.2006 21:39
von NicTheQuick
Volker Schmid hat geschrieben:Berechnen eines 2048 Bit Diffie-Hellman
Ist das auch eine Procedure oder gehören die Unterpunkte dazu?
- Berechnen von Modus über diese Zahlen
Was ist ein Modus über eine Zahl?
- Berechnen von PowerMod dieser Zahlen
Was ist das besondere an PowerMod?
Bis wann brauchst du das ganze?
Verfasst: 07.03.2006 08:51
von Kukulkan
Hi Nic,
Ist das auch eine Procedure oder gehören die Unterpunkte dazu?
Das ist die gewünschte Funktionalität. Alle Unterpunkte sind Bestandteil dieser Funktionalität (sozusagen die Details).
Was ist ein Modus über eine Zahl?
Sorry, meite natürlich Modulo.
Was ist das besondere an PowerMod?
http://documents.wolfram.com/mathematic ... s/PowerMod
Bis wann brauchst du das ganze?
Nach Auftragserteilung max. 1 Woche.
Grüsse,
Volker
Verfasst: 07.03.2006 15:31
von armada
Ich kann funktionierenden Code für beinahe alle diese Aufgaben als C- und VB-Code liefern. Ich hab nur nicht die Zeit und den Nerv das alles nach PB zu wandeln. Auch fehlt mir das KnowHow, das auf Speed zu optimieren (evtl. mit Inline-Assembler?)
könntest diese codes mal hier posten...hab kein plan was dieser schlüsselaustausch is
Verfasst: 07.03.2006 18:11
von Kukulkan
Hallo Armada,
Hier die Info's zu Diffie-Hellman:
http://de.wikipedia.org/wiki/Diffie-Hellman
Unten bei Wikipedia findest Du auch Links mit Beispielen etc.. Nur will ich das mit Zahlen in der Grösse von 2048 Bit machen (PB-Quads sind 64 Bit).
Volker
Verfasst: 07.03.2006 18:25
von armada
ich weiß wie groß quads sind
werd mir das da mal in ruhe anschauen...scheint ja nich allzu kompliziert zu sein

Verfasst: 07.03.2006 19:40
von hardfalcon
Für alle, die das ganze nocmal etwas einfacher erklärt haben wollen, hier ein Link:
http://www.xml-dev.com/blog/index.php?a ... pic&id=196
(Hab den Link aus dem Wikipedia-Artikel...)
Verfasst: 08.03.2006 17:42
von armada
habs noch nich getestet:
Code: Alles auswählen
Structure BigVar
w.w[128]
EndStructure
Procedure BigVar_Length(*Var.BigVar)
Protected Zaehler
For Zaehler = 127 To 0 Step -1
If *Var\w[Zaehler] <> 0
Break
EndIf
Next
ProcedureReturn Zaehler
EndProcedure
Procedure BigVar_Addition(*Var1.BigVar, *Var2.BigVar, *Ergebnis.BigVar)
Protected Zwischenergebnis, Zaehler, Uebertrag
For Zaehler = 0 To 127
Zwischenergebnis = *Var1\w[Zaehler] + *Var2\w[Zaehler]
Uebertrag = Zwischenergebnis >> 16
*Ergebnis\w[Zaehler] = Zwischenergebnis & $FFFF
Next
EndProcedure
Procedure BigVar_Subtraktion(*Var1.BigVar, *Var2.BigVar, *Ergebnis.BigVar)
Protected Zwischenergebnis, Zaehler, Uebertrag
For Zaehler = 0 To 127
Zwischenergebnis = *Var1\w[Zaehler] - *Var2\w[Zaehler] - Uebertrag
If Zwischenergebnis < 0
Uebertrag = 1
Zwischenergebnis + $10000
Else
Uebertrag = 0
EndIf
*Ergebnis\w[Zaehler] = Zwischenergebnis & $FFFF
Next
EndProcedure
Procedure BigVar_RandomNumber(Startwert, *Ergebnis.BigVar)
Protected Zaehler, ende
RandomSeed(Startwert)
For Zaehler = 0 To Random(127)
*Ergebnis\w[Zaehler] = Random($FFFF)
Next
EndProcedure
Procedure BigVar_Multiplikation(*Var1.BigVar, *Var2.BigVar, *Ergebnis.BigVar)
Protected Laenge1, Laenge2, Zaehler, Zaehler1, Zaehler2, Zwischenergebnis, Uebertrag, Tempvar.BigVar
Laenge1 = BigVar_Length(*Var1)
Laenge2 = BigVar_Length(*Var2)
For Zaehler1 = 0 To Laenge1
For Zaehler2 = 0 To Laenge2
Zwischenergebnis = *Var1\w[Zaehler1] * *Var2\w[Zaehler2]
Zwischenergebnis + Uebertrag
Uebertrag = Zwischenergebnis >> 16
Tempvar\w[Zaehler1 + Zaehler2] = Zwischenergebnis & $FFFF
Next
If Uebertrag
Tempvar\w[Zaehler1 + Zaehler2 + 1] = Uebertrag
EndIf
BigVar_Addition(@Tempvar, *Ergebnis, *Ergebnis)
For Zaehler = 0 To 127
Tempvar\w[Zaehler] = 0
Next
Uebertrag = 0
Next
EndProcedure
wenn du lust hast kannste das ja schonmal testen obs funzt...
wenn ich zeit hab mach ich weiter...
achja und weil ich das jetzt erst sehe...geld will ich keins...dafür is aber auch nich kommentiert

Verfasst: 08.03.2006 18:11
von Kukulkan
Hallo armada,
Danke für deine Mühe. Kannst Du ein Beispiel machen, wie die Zahlen in die BigVar-Struktur übergeben werden? Ich hab die Zahlen ja als HEX (zB "849dbd59069bff80cf30d052b74beeefc285b46fc773218c737ec8ee993b4f2ded30f48edace915f" für eine 320 Bit Zahl). Hex in Dec ist kein Thema, aber wie (Reihenfolge? Immer in 16Bit Blöcken?) muss das in deiner Struktur liegen?
Eigentlich fehlt dann nur noch die Division durch 2 und der Modulo. Dann könnte ich es testen.
Volker
Verfasst: 08.03.2006 18:20
von armada
Volker Schmid hat geschrieben:Hallo armada,
Danke für deine Mühe. Kannst Du ein Beispiel machen, wie die Zahlen in die BigVar-Struktur übergeben werden? Ich hab die Zahlen ja als HEX (zB "849dbd59069bff80cf30d052b74beeefc285b46fc773218c737ec8ee993b4f2ded30f48edace915f" für eine 320 Bit Zahl). Hex in Dec ist kein Thema, aber wie (Reihenfolge? Immer in 16Bit Blöcken?) muss das in deiner Struktur liegen?
Eigentlich fehlt dann nur noch die Division durch 2 und der Modulo. Dann könnte ich es testen.
Volker
also gut is ja nich viel arbeit...und du brauchst nur division durch 2? was ist dann falls das ergebnis ungerade ist...die funktionen sind jetzt nur für grade zahlen...die 1 abschneiden oder wie soll ichs machen?