Kezdőoldal » Tudományok » Alkalmazott tudományok » Az RSA algoritmusban hogy...

Az RSA algoritmusban hogy lehet a c=m^e mod N-t-ből, hogy lehet olyan függvényt csinálni, ami 0-256 közötti c számot generál?

Figyelt kérdés

Üdv mindenkinek!

Mostanában kezdtem el foglalkozni a RSA algoritmussal( konkrétan egy programot írnék, ami kódol nekem tetszőleges szöveget RSA-val). A következő matematikai problémába ütköztem( a programozással egyelőre nincs gondom, ki tudom számolni a moduláris hatványozást, meg csináltam is olyan adattipust amiben tudok tárolni ilyen nagy számot):

Ugye így kell kódolni:

c=m^e mod N értéket kell kiszámítanom. Erre felhasználtam az ismételt négyzetre emeléses hatványozást. Szépen ki is jön nekem egy jó nagy szám.

( Mivel N az 2048 bites, tehát a szám nagyon nagy. Az exponense 65535 körül van. Így a maradék is hatalmas.

Viszont ezt szeretném karakterré kódolni.

A karakter 0-256 közötti értéket vehet fel.( ASCII kódolás miatt)

Gondoltam, hogy a következőt csinálnám:

c=m^e mod(N mod 256) Ez automatikusan 0-256 közötti számot ad majd eredményül.( sőt mivel hogy konkrétan 32-256 között kell nekem szám, mivel az ASCII kódtábla 0-32 között csak vezérlő karaktereket tartalmaz emiatt helyette így kódolnék: c=(m^e mod (N mod 224))+32, ez nem rontaná el a kódolást, egyértelmú leképezés lenne, és dekódolni is tudnék ennek a függvénynek az inverzével, és a Fermat tételt is tudnám alkalmazni rá, legalább is este fél egyig ezen agyaltam és eddig jutottam mielőtt elaludtam volna)

Csakhogy nem tudom, hogy N mod 256-ot ki tudom-e zámolni kellő hatákonysággal. Azért 2^2048 elég nagy szám, és ha a maradék csak fele akkora, vagy 10-ed akkora akkor is nincs annyi memória, hogy ki tudnám számolni az osztás eredményét.

Valaki tudja erre a megoldást?

tehát (N mod p) hatékony és gyors kiszámításra? Vagy van erre valami konkrét megoldás?



2013. máj. 12. 13:14
 1/1 anonim válasza:

Bár ez egy ezer éves kérdés, de remélem még olvasod:)

Elvi hibás az elképzelésed. Ha egy számot (legyen az akár nagyon nagy is) mod 255-özöl, akkor a maradék számod maximum 254 lehet (255, és nem 256, mert 0-255 az ASCII, de 256 féle értéket vehet fel 8 bit miatt). Ha ezzel modozod az üzeneted, annak értéke is... Ezt nem fogod dekódolni.

Másik, hogy RSA-val maximum a kulcs méretével megegyező méretű üzenetet tudsz rejtjelezni, tehát 2048 esetén 256 byte-osat. Ha a "tetszőleges szöveg" kitételbe ez belefér, akkor természetesen elegendő lehet.

Ha jól értem, ezzel a modozással ábrázolható formává akarod tenni a rejtjelezett szöveget. Ne akard feltalálni a spanyol viaszt, base64 enkódolást pontosan erre találták ki.

RSA egyébként nem egy hatékony algoritmus, pontosabban számításigényes. Üzeneteket inkább szimmetrikus kulcsú titkosítással szoktak rejtjelezni (pl AES256, lehetőleg CBC módban, és kriptográfiailag helyes módon generált kulcssal (amely nem egyezik meg a jelszóval!) és IV-vel), és csak a kulcs átviteléhez használják az RSA-t. Ennek a megoldásnak előnye, hogy nem limitálja a kulcs mérete a rejtjelezhető üzenetet.

2013. júl. 5. 00:58
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!