» »

VB.NET evklidov algoritem razširjen

VB.NET evklidov algoritem razširjen

Yacked2 ::

Pozdravljeni, potreboval bi pomoč pri prevajanju te kode: Extended Euclidean algorithm @ Wikipedia v VB.net saj jo potrebujem za računanje javnega kjuca (RSA), obrazec je:

e^-1 = d mod O(n)

Hvala za pomoč
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Yacked2 ::

Noben ne ve :O ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

amacar ::

Kaj bi sploh rad naredil? Algoritem itak maš napisan na wikipedii, ostalo pa ne vem kaj še potrebuješ.

Yacked2 ::

Zanima me funkica, ki izračuna lasty v VB.net, ker nerazumem sledeče kode:
function extended_gcd(a, b)
    x := 0    lastx := 1
    y := 1    lasty := 0
    while b ? 0
        quotient := a div b
        (a, b) := (b, a mod b)
        (x, lastx) := (lastx - quotient*x, x)
        (y, lasty) := (lasty - quotient*y, y)       
    return (lastx, lasty)

Se pravi v funkico vržem a in b, se pravi O(n) ter e nato funkcija najavi integere x,y,lastx ter lasty, nato najavi ter izračuna quotient kot integer = a /b (div verejtno pomeni deljenje)

Sedaj pa tele vrstice ne razumem:
 (a, b) := (b, a mod b)


A je to isto kot Dim a as integer = b in Dim b as integer = a mod b ?
Isto tukaj.
(x, lastx) := (lastx - quotient*x, x)
(y, lasty) := (lasty - quotient*y, y)    


Nato je dovolj če vrnem samo lasty saj je to moj privatni kjuč ?

Nekaj sem čaral pa mi je vedno vn vrglo overflow error
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Zgodovina sprememb…

  • spremenil: Yacked2 ()

amacar ::

to (a, b) := (b, a mod b) lahko zapišemo kot:
a=b
b=a mod b
Ampak pomoje moraš paziti, da ne prepišeš zadev, ker če je najprej a=b, bo potem izraz a mod b = b mod b in to ne bo ok, tako da si shrani v temp.


Spodnji izraz pa na enak način.

Zgodovina sprememb…

  • spremenil: amacar ()

Yacked2 ::

Aha, to je bil probem, Hvala ja. Vem da za zamenjavo spremenljiv rabim uvesni novo spremenjivko, a se še nikoli prej nisem srečal z podobno kodo. Bom poiskusil če koda deluje. Še enkrat najlepša hvala !
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Yacked2 ::

No sedaj sem sestavil kodo tako:
        Dim p As Decimal = TextBox1.Text                             'prvo prastevilo
        Dim q As Decimal = TextBox2.Text                             'drugo prastevilo
        Dim n As Decimal = p * q                                     'izracunamo n
        Dim O As Decimal = (p - 1) * (q - 1)                         'izracunamo O(n)

        Dim Javni As Decimal = TextBox4.Text                         'vnesem javni kjuc

        'zacetek racunanja 
        Dim a As Decimal = (p - 1) * (q - 1)                          'vnesem a=O                                               
        Dim b As Decimal = Javni                                      'vnesem javni kjuc

        Dim x As Decimal = 0                                          
        Dim y As Decimal = 1
        Dim lastx As Decimal = 1
        Dim lasty As Decimal = 0

        While b <> 0
            Dim quotient As Decimal = a / b

            y = lasty - quotient * y
           
        End While

        TextBox3.Text = y
       
        TextBox5.Text = n.ToString 'izpisemo n


Pa se mi ustavi pri: -napaka overload
y = lasty - quotient * y
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

amacar ::

Algoritem z wikipedije dela...

Sub evklid()

Dim x, y, lastx, lasty, temp, a, b, quotient As Integer

x = 0
y = 1
lastx = 1
lasty = 0
a = 120
b = 23

While b <> 0
    quotient = Int(a / b)
    temp = a
    a = b
    b = temp Mod b
    temp = x
    x = (lastx - quotient * x)
    lastx = temp
    temp = y
    y = (lasty - quotient * y)
    lasty = temp
Wend
MsgBox (lastx & " in " & lasty)
End Sub

Yacked2 ::

Dela, hwala !
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

MYsql: Error: Incorrect decimal value: '' for column '' at row -1

Oddelek: Programiranje
7623 (548) Vazelin
»

vb.net: dynamic textbox

Oddelek: Programiranje
51172 (1062) saule
»

[c#] operator ^ in decimal

Oddelek: Programiranje
71238 (1105) technolog
»

c# class

Oddelek: Programiranje
342256 (1850) japol
»

visual basic 2008 express edition

Oddelek: Programiranje
221802 (1229) sel

Več podobnih tem