Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Momenteel ben ik voor een experiment in Java bezig met het leren beheersen van RSA encryptie. Nu wilde ik deze eerst uitproberen op een spreadsheet, zodat ik wat inzicht krijg in het verwerken van ongecodeerde tekst naar een versleutelde info.

Het probleem is dat ik bij c = m^e mod(n) altijd op 0 uitkom, wat ik ook invul. }:O Dit lijkt me niet helemaal de bedoeling, dus ik heb al deze pagina doorgelezen, maar ik kom er niet verder uit.
*snip*

Hopelijk kunnen jullie helpen, bij voorbaat dank!

[ Voor 12% gewijzigd door Creepy op 22-02-2010 17:09 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
Post AUB je relevante code (dus niet alle!) gewoon hier. Als jij straks besluit (of 2shared) om je bestand weg te halen dan heeft niemand meer wat aan dit topic.

Los daarvan heb je uiteraard al gedebugged. Dus wat kwam daar precies uit? Waar gaat het ongeveer mis?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nog geen relevante Javacode, aangezien ik het eerst uitprobeer in een spreadsheet. Vandaar dat ik het heb geupload. Ik vroeg me dus af of jullie konden zien wat er mis was met mijn speadsheet.
Debugging heb ik wel naar gekeken, maar ik heb me helemaal aan de uitleg in het linkje gehouden.

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Ik neem aan dat je in je spreadsheet gebruik maakt van formules en/of VBA code?
Misschien kan je die posten.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
P = 7
Q = 13

E = 31

N (cel B6)= p*q = 31

D = 7

Nu dan de echte codering:
Clear tekst(m): 12
m^e (cel E6): 2.85E+033
Cyphertekst: =MOD(E6,B6) oftewel =MOD(2.85E+033, 31)

Waaruit uiteindelijk altijd 0 uitkomt, behalve bij een clear tekst van 1, 2 of 3.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:22
Excel kan niet rekenen met zulke grote getallen. Dan krijg je een conversie naar floating point (dat is dus die 2.85×1033, hoewel intern er nog wel wat meer cijfers achter de komma bekend zijn) maar die representatie is niet nauwkeurig genoeg om vervolgens de rest na deling door een klein getal exact te berekenen.

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Als ik het zelf in Excel (2007) probeer krijg ik een error in de vorm van "#NUM!" met een help icoon erbij, daarin staat:
Causes
You may have used an unacceptable argument in a function that requires a numeric argument.
You may have used a worksheet function that iterates (iteration: Repeated calculation of a worksheet until a specific numeric condition is met.), such as IRR or RATE, and the function cannot find a result.
You may have entered a formula that produces a number that is too large or too small to be represented in Excel.
Zoals Soultaker al aangeeft komt het door een te groot getal.
Ik zelf zou het proberen in een speciaal pakket zoals Maple of je schrijft er zelf een programma voor (misschien met behulp van BigIntegers).

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:22
De gebruikelijke aanpak is om niet eerst te machtsverheffen en daarna een deling uit te voeren, maar de twee te combineren, waardoor de machtsverheffing modulair plaatsvindt. Zie bijvoorbeeld Wikipedia over exponentation by squaring en modular exponentation (helaas geen Nederlandse versies beschikbaar).

Dan hoef je geen héle grote integers te supporten en kun je die kleine voorbeeldjes met een gewoon integertype uitrekenen. Voor serieuze toepassingen werkt RSA trouwens nog steeds met getallen die groter zijn dan in een register passen (enkele kilobytes) dus dan heb je nog steeds enige support voor grote integers (maar wel van een vaste grootte) nodig.

[ Voor 8% gewijzigd door Soultaker op 22-02-2010 19:26 ]


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 09:58

BCC

Lees dan ook deze even: http://www.moserware.com/...re-guide-to-advanced.html Vooral de foot-shooting-prevention agreement :)

[ Voor 20% gewijzigd door BCC op 22-02-2010 19:31 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 11:39

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Afgezien van de opmerkingen over grote getallen, waaruit al duidelijk wordt dat je je toch echt wat meer moet verdiepen in de materie voor je met dit soort systemen wilt gaan spelen: Sinds wanneer is 7*13 gelijk aan 31 :?

Dat moet 91 zijn.

Verder moet E een getal zijn tussen 1 en phi(N)=(p-1)(q-1) met gcd(E,phi(N))=1, wat voor N=31 niet klopt, maargoed, die 31 klopt sowieso niet, voor N=91 kan E=31 wel.

Opzich leuk om een beetje te spelen met dit soort dingen, maar op de een of andere manier bekruipt me toch altijd een gevoel van onbehagen als iemand dit soort fouten maakt bij het implementeren van een cryptosysteem. Het is dan ook niet voor niets dat het eigenlijk not-done is om je eigen implementatie van dit soort dingen te maken, zelfs voor mensen die wel weten waar ze mee bezig zijn.

Wat dat betreft sluit ik me dus aan bij de opmerking van BCC.

[ Voor 15% gewijzigd door Orion84 op 22-02-2010 19:47 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het was puur een experiment/ Ik was niet van plan het professioneel toe te gaan passen of zo :P Maar bedankt voor alle info!
Pagina: 1