Matematikk-seminar med Maple-demo

Ivar Skau og Harald Pleym

Mathematics possesses not only truth, but supreme beauty

- a beauty cold and au stere, like that of sculpture,

without appeal to any part of our weaker nature...

sublimely pure, and capable of a stern perfection

such as only the greatest art can show

Bertrand Russell

[Maple Bitmap] [Maple OLE 2.0 Object]

Symmetri og ornamentikk

Symmetri

Det klassiske symmetribegrepet

En symmetriegenskap ved en figur består i at den er invariant ved en kongruenstransformasjon (en avstandsbevarende transformasjon). Eksempler: Speiling, rotasjon . Hva mere?:  

Setning:  Enhver kongruenstransformasjon i planet kan klassifiseres som

  • En rotasjon
  • En speiling
  • En translasjon (parallellforskyvning)
  • En gliderefleksjon

En endelig figurs symmetriegenskap er gitt ved

1)   Rotasjoner , symmetrigruppene er Z[1] = I, Z[2], Z[3] , ...

Eksempel Z[6] :

>    alpha:=2*Pi/6:  

>    Rotasjon(pltHP(red),alpha,5);

[Maple Plot]

>    alpha:=67/180*Pi:

>    Rotasjon(pltHP(red),alpha,5);

[Maple Plot]

>    R:=i->Rotasjon(pltHP(red),alpha,i):

>    display(seq(R(i),i=0..20),insequence=true);

[Maple Plot]

>    Rotasjon(pltHP(red),alpha,90);

[Maple Plot]

2)  Speiling , symmetrigruppene er D[1], D[2], D[3] , ...

Eksempel D[5] :

>    L1:=[[0,0],[1,0]]: L2:=[[0,0],[1,tan(Pi/5)]]:

>    S:=Speiling(t1,L1,L2,axes=none,scaling=constrained):%;

[Maple Plot]

>    rot:=u->rotate(p2,u):
plt:=u->display(S,rot(u)):
display(seq(plt(2*Pi/100*i),i=0..20),insequence=true,scaling=constrained);

[Maple Plot]

>    beta:=72/180*Pi:

>    display(S,rotate(S,2*beta),rotate(S,3*beta),scaling=constrained);

[Maple Plot]

Båndmønster

>    BåndMønster(1,red,8);

>    BåndMønster(2,blue,8);

>    BåndMønster(3,coral,8);

>    BåndMønster(4,cyan,8);

>    BåndMønster(5,magenta,10);

>    BåndMønster(6,maroon,10);

>    BåndMønster(7,pink,4);

>    BåndMønster(8,turquoise,8);

[Maple Plot]

[Maple Plot]
[Maple Plot]

[Maple Plot]

[Maple Plot]

[Maple Plot]

[Maple Plot]

FermatPunktet

>    a,alpha,b,beta,d,e:=-1,0,1,0,0,-sqrt(3):

>    FermatPunktet(1,1,a,alpha,b,beta,d,e,XY,G);

[Maple Plot]

>    XY;

{y = .3045037012, x = .7454306864}

>    G;

[Maple Plot]

>    p:=(c,phi)->FermatPunktet(c,phi,a,alpha,b,beta,d,e,XY,G):

>    display(seq(p(cos(Pi/41*i),sin(Pi/41*i)),i=1..38),tickmarks=[4,4],insequence=true,scaling=constrained);

[Maple Plot]

Similariteter og logaritmiske spiraler

r(theta) = exp(-1/20*theta)

>    plt:=n->polarplot(exp(-theta/20),theta=0..n*2*Pi,numpoints=1500,thickness=2,scaling=constrained):

>    plt(20);

[Maple Plot]

Rotasjon av en logaritmisk spiral

[Maple Plot]

r(theta) = exp(-theta/20)

Rotasjon mot urviseren gir en ekspansjon, rotasjon med urviseren gir en kontraksjon

Spiralformet gangmønster

Fire innsekter jager hverandre på en kvadratisk flate. Hvert innsekt har hele tiden kurs mot naboen.

[Maple Plot]

Kjeglespiral

>    display(seq(Spiral(i),i=1..24),lightmodel=light2,insequence=true,orientation=[-71,66]);

[Maple Plot]

Sjøskjell

Punktet  ( x, y, z ) på et skjell kan skrives på formen:

x = D*(A*sin(beta)*cos(Theta)+R*cos(s+phi)*cos(Theta+Omega)-R*sin(mu)*sin(s+phi)*sin(Theta+Omega))*exp(Theta*cot(alpha))
y = (-A*sin(beta)*sin(Theta)-R*cos(s+phi)*sin(Theta+Omega)-R*sin(mu)*sin(s+phi)*cos(Theta+Omega))*exp(Theta*cot(alpha)) z = (-A*cos(beta)+R*sin(s+phi)*cos(mu))*exp(Theta*cot(alpha))

Parametrene er

Skjell

Natalina

  Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld1:=[80,40,55,10,30,25,12,16,0,0,0,0,0]:
theta1:=[-4*Pi,4*Pi]:
S:=[-270,62]:
Grid:=[100,200]:
SeaShell(Ld1,Grid,theta1,S,Natalina,scaling=constrained,orientation=[-68,80],style=patchnogrid,lightmodel=light2,shading=xy);

 

[Maple Plot]

Natalina i aksjon

Lyria

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[83.9,-19,45,1,-2,50,40,14,0,6,27,8,8]:
theta:=[-4*Pi,4*Pi]:
S:=[-51,9]:
Grid:=[80,150]:

>    SeaShell(Ld,Grid,theta,S,Lyria,style=patchnogrid,scaling=constrained,orientation=[-39,66],lightmodel=light2,shading=xyz);

[Maple Plot]

Turritella

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[88.9,4,55,1,-2,22.2,1.3,1.5,0,0,0,0,0]:
theta:=[-30*Pi,4*Pi]:
S:=[-267,39]:
Grid:=[30,250]:

>    SeaShell(Ld,Grid,theta,S,Turritella,style=patchnogrid,scaling=constrained,orientation=[-83,89],lightmodel=light2,shading=xy);

[Maple Plot]

>   

 Oxystele

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[84.9,7,-36,1,-2,47,40,19,0,6,27,8,0]:
theta:=[-20*Pi,4*Pi]:
S:=[-70,70]:
Grid:=[40,350]:

>    SeaShell(Ld,Grid,theta,S,Oxystele,style=patchnogrid,scaling=constrained,orientation=[-26,91],lightmodel=light2,shading=xyz);

[Maple Plot]

>   

Planorbis

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[84,85,10,45,5,45,20,30,0,0,0,0,0]:
theta:=[-1*Pi,4*Pi]:
S:=[-150,130]:
Grid:=[50,150]:

>    SeaShell(Ld,Grid,theta,S,Planorbis,style=patchnogrid,scaling=constrained,orientation=[-94,65],lightmodel=light3,shading=xy);

[Maple Plot]

Ammonite

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[83,90,1,1,1,2.5,1.0,0.9,10,100,20,15,0.5]:
theta:=[-Pi,4*Pi]:
S:=[-170,170]:
Grid:=[40,160]:

>    SeaShell(Ld,Grid,theta,S,Ammonite,style=patchnogrid,scaling=constrained,orientation=[-90,62],lightmodel=light4,shading=xy);

[Maple Plot]

Conus

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[87,7,78,0,0,7,4.3,1.0,0,0,0,0,0]:
theta:=[-12*Pi,4*Pi]:
S:=[-180,2]:
Grid:=[60,280]:

>    SeaShell(Ld,Grid,theta,S,Conus,style=patchnogrid,scaling=constrained,orientation=[-81,94],lightmodel=light2,shading=xy);

[Maple Plot]

Helcion

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[18,90,0,0,-40,450,400,310,0,0,0,0,0]:
theta:=[-0,4*Pi]:
S:=[-180,180]:
Grid:=[60,100]:

>    SeaShell(Ld,Grid,theta,S,Helcion,style=patch,scaling=constrained,orientation=[121,103],color=eggshell);

[Maple Plot]

Nautilus

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[80,90,0,0,0,2,2,1.5,0,0,0,0,0]:
theta:=[Pi,4*Pi]:
S:=[-163,163]:
Grid:=[30,60]:

>    SeaShell(Ld,Grid,theta,S,Nautilus,style=patchnogrid,scaling=constrained,orientation=[-79,54],lightmodel=light2,shading=xyz);

[Maple Plot]

Codakia

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[37,90,0,1,1,10500,10000,10500,0,0,0,0,0]:

>    theta:=[-Pi,4*Pi]:
S:=[-180,180]:
Grid:=[100,100]:

>    SeaShell(Ld,Grid,theta,S,Codakia,style=patch,scaling=constrained,orientation=[-122,-58],color=gainsboro);

[Maple Plot]

Ukjent

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[83,90,1,1,1,2.5,1,0.9,Pi/18,5*Pi/9,Pi/9,15,1/2]:
theta:=[-Pi,3*Pi]:
S:=[-170,170]:
Grid:=[150,250]:

>    SeaShell(Ld,Grid,theta,S,Utvekster,style=patchnogrid,scaling=constrained,orientation=[-90,15],lightmodel=light2,shading=xy);

[Maple Plot]

Struthiolaria

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[86.9,13,40,10,30,5,1.8,1.6,-15,5,5,16,1/2]:

>    theta:=[-20*Pi,4*Pi]:
S:=[-168,24]:
Grid:=[50,350]:

>    SeaShell(Ld,Grid,theta,S,Struthiolaria,style=patchnogrid,scaling=constrained,orientation=[-58,82],lightmodel=light2,shading=xy);

[Maple Plot]

Forvitring av et skjell

Ld = [alpha, beta, phi, mu, Omega, A, a, b, P, W[1], W[2], N, L]

>    Ld:=[84.2,20,-55,0,0,20,7.5,5,0,6,27,8,0]:

>    theta:=[-20*Pi,4*Pi]:
S:=u->[-180,-25*u]:
Grid:=[50,350]:

>    p:=u->SeaShell(Ld,Grid,theta,S(u),Struthiolaria,style=patch,scaling=constrained,orientation=[-85,50],color=light_tan):

>    display(seq(p(u),u=-6..1),insequence=true);

[Maple Plot]

Sluttproduktet uten gridlinjer

>    SeaShell(Ld,Grid,theta,S(1),Struthiolaria,style=patchnogrid,scaling=constrained,orientation=[73,77],lightmodel=light4,color=light_tan);

[Maple Plot]

Smultring

>    Ld:=i->[90,90,0,0,0,25,6+i/80,(i/80)^2,0,0,0,0,0]:
theta:=[-4*Pi,4*Pi]:
S:=[-270,90]:
Grid:=[20,40]:

>    s1:=i->SeaShell(Ld(i),Grid,theta,S,Natalina,style=wireframe,scaling=constrained,orientation=[-68,54],color=coral):

>    display(seq(s1(i),i=90..240),insequence=true,scaling=constrained,orientation=[-68,54]);

[Maple Plot]

Det gyldne snitt og Fibonacci-tallene

Det gyldne snitt

>    GyldneSnitt(20,s);

[Maple Plot]

>    s;

phi = 2/(5^(1/2)-1), phi = 1/2+1/2*5^(1/2)

Eksakt løsning

>    eq:=F(n)=F(n-2)+F(n-1):%;

>    F(n)=rsolve({eq,F(0)=1,F(1)=1},F(n));
F:=unapply(rhs(%),n):

F(n) = F(n-2)+F(n-1)

F(n) = (1/10*5^(1/2)+1/2)*(1/2+1/2*5^(1/2))^n+(-1/10*5^(1/2)+1/2)*(1/2-1/2*5^(1/2))^n

>    F(10)=simplify(F(10));

(1/10*5^(1/2)+1/2)*(1/2+1/2*5^(1/2))^10+(-1/10*5^(1/2)+1/2)*(1/2-1/2*5^(1/2))^10 = 89

>    L:=[seq(simplify(F(i)),i=1..50)];

L := [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, ...
L := [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, ...
L := [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, ...
L := [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, ...

>    GS:=Limit(F(n)/F(n-1),n=infinity):
GS=value(GS);

Limit(((1/10*5^(1/2)+1/2)*(1/2+1/2*5^(1/2))^n+(-1/10*5^(1/2)+1/2)*(1/2-1/2*5^(1/2))^n)/((1/10*5^(1/2)+1/2)*(1/2+1/2*5^(1/2))^(n-1)+(-1/10*5^(1/2)+1/2)*(1/2-1/2*5^(1/2))^(n-1)),n = infinity) = 1/2+1/2*5...

Fibonacci og binomialkoeffisientene

>    f:=n->sum(binomial(n-k,k-1),k=1..n):

>    'f(n)'=f(n);

f(n) = sum(binomial(n-k,k-1),k = 1 .. n)

>    seq(f(n),n=1..20);

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765

>    PascalsTrekant(6);

1

1, 1

1, 2, 1

1, 3, 3, 1

1, 4, 6, 4, 1

1, 5, 10, 10, 5, 1

1, 6, 15, 20, 15, 6, 1

>    matrix(10,10,(i,j)->binomial((i-1),(j-1)));

matrix([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0, 0, 0, 0, 0], [1, 3, 3, 1, 0, 0, 0, 0, 0, 0], [1, 4, 6, 4, 1, 0, 0, 0, 0, 0], [1, 5, 10, 10, 5, 1, 0, 0, 0, 0],...

Vekst av punkter (frøsetting på en solsikke)

På en sirkel

>    FrøPlot(12,0,5/16,style=point,symbol=box,symbolsize=16,color=red,axes=none);

[Maple Plot]

>    FrøPlot(110,0,Pi-3,style=point,symbol=circle,symbolsize=16,color=red,axes=none);

[Maple Plot]

Spiral

>    Vekst(200,1/2,Pi-3,P,style=point,symbol=circle,symbolsize=12,color=red,axes=none);

[Maple Plot]

>    with(numtheory):

>    cf:=n->cfrac (Pi-3,n):      

>    seq(cf(i),i=1..5);

1/(7+`...`), 1/(7+1/(15+`...`)), 1/(7+1/(15+1/(1+`...`))), 1/(7+1/(15+1/(1+1/(292+`...`)))), 1/(7+1/(15+1/(1+1/(292+1/(1+`...`)))))

>    Konv:=n->nthconver (cf(n),n):

>    seq(Konv(i),i=1..5);

1/7, 15/106, 16/113, 4687/33102, 4703/33215

Solsikke

>    p1:=FrøPlot(150,1/2,(sqrt(5)-1)/2,style=point,symbol=circle,symbolsize=18,color=red,axes=none):%;

[Maple Plot]

>    p2:=FrøPlot(150,1/2,(sqrt(5)-1)/2,style=line,color=blue,axes=none):

>    display(p1,p2);

[Maple Plot]

>    p3:=FrøPlot(150,1/2,13/21,style=point,symbol=circle,symbolsize=18,color=red,axes=none):%;

[Maple Plot]

>    p4:=FrøPlot(150,1/2,13/21,style=line,color=blue,axes=none):

>    display(p1,p2);

[Maple Plot]

Et snodig "paradoks" basert på formelen: f[n+1]*f[n-1]-f[n]^2 = (-1)^n

Eksempel 1

13·5 -   8^2   = 1

[Maple Plot] [Maple Plot]

Løsning paradokset

[Maple Plot]

Eksempel 2

[Maple Plot] [Maple Plot]

Løsning på paradokset

[Maple Plot]

Fraktaler

Snøfnugg

>    Snøfnugg(2,blue);

[Maple Plot]

>    Snøfnugg(5,blue);

[Maple Plot]

>    display(seq(Snøfnugg(i,blue),i=0..5),insequence=true);

[Maple Plot]

Lengden av snøfnugget er gitt ved

s(n) = s(n-1)+s(n-1)/3, s(1) = 3

>    eq:=s(n) = s(n-1)+s(n-1)/3, s(1)=3:%;

s(n) = 4/3*s(n-1), s(1) = 3

>    s(n)=rsolve({eq},s(n));

s(n) = 9/4*(4/3)^n

>    s:=unapply(rhs(%),n):

>    plot(s(n),n=1..20,`s(n)`);

[Maple Plot]

Sierpinski

>    L:=[[0,0],[2,0],[1,tan(Pi/3)]]:

>    Sierpinski(L,5,t);

[Maple Plot]

>    display(seq(Sierpinski(L,i,t),i=1..5),insequence=true);

[Maple Plot]

>    L:=[[-1,-1,0],[0,sqrt(3)-1,0],[1,-1,0],[0,sqrt(3)/3-1,2*sqrt(15)/5]]:

>    Sierpinski(L,3,p);

[Maple Plot]

>    display(seq(Sierpinski(L,i,p),i=1..5),insequence=true);

[Maple Plot]

>    L:=[[0,0],[0,1],[1,0]]:

>    S:=Sierpinski(L,5,t,axes=none):%;

[Maple Plot]

>    T:=transform((x,y)->[x^2*(x-1),y]):

>    display(T(S));

[Maple Plot]

Mandelbrot

Flytdiagrammet indikerer beregningen som utføres for å bestemme fargen som skal assosieres med punktet i det komplekse planet svarende til det komplekse tallet k . Maksimum antall iterasjoner som trengs for å bestemme om et punkt tilhører Mandelbrotsettet eller ikke er vilkårlig satt til 50 , som kan økes for finere detaljer. Tilsvarende er "unnslipningsdistansen" satt 4

[Maple Plot]

>    plot3d(0,-2.1..1.1,-1.6..1.6,orientation=[-90,0], grid=[150,150],style=patchnogrid,scaling=constrained,color=Mandelbrot);

[Maple Plot]

Flere eksempler

[Maple Plot]

[Maple Plot]

zoom 1

Sentrum: x+y*i , der x = -0 . 1616  og   y = 0 .6519 .  Bredde og høyde:   0.012

[Maple Plot]

zoom 2

Sentrum: x+y*i , der x = -0 .161617 og y = 0 . 654518    .  Bredde og høyde:   0.0006

  [Maple OLE 2.0 Object]  

zoom 3

Sentrum: x+y*i , where x = -0 . 16161714  and y = 0 . 65451814 .  Bredde og høyde:   0.000006 .

  [Maple OLE 2.0 Object]  

zoom 4

Sentrum: x+y*i , der x = -0 . 1616171402  og   y = 0 . 654518136 .  Bredde og høyde: 0.0000024 .

Dette er omtrent minste utsnitt som kan gjøres med Maple. Videre inn-zooming må gjøres med andre typer av computerprogrammer.

  [Maple OLE 2.0 Object]  

 

 

zoom 5

Sentrum: x+y*i , der x = -0 . 1616171402  og   y = 0 . 654518136 .  Bredde: 8*`.`*10^(-7) .  

  [Maple Bitmap]

zoom 6

Sentrum: x+y*i , der x = -0 . 1616171402  og   y = 0 . 654518136 .   Bredde: 8*10^(-8) .  

 

  [Maple Bitmap]  

zoom 7

Sentrum: x+y*i , der x = -0 . 16161714023  og   y = 0 . 65451813597 .  Bredde: 1.13*10^(-9) .

   

  [Maple Bitmap]  

zoom 8

Sentrum: x+y*i , where x = -0 .161617140231491 and y = 0 .654518135972208.   Width: 1.1302042635*10^(-11) .

  [Maple Bitmap]  

zoom 9

Sentrum: x+y*i , der x = -0 . 161617140232233  og   y = 0 . 65451813597249 .   Bredde: 1.6*10^(-12) .

  

  [Maple Bitmap]  

Andre typer

Eksempel 1

  [Maple OLE 2.0 Object]  

  

Eksempel 2

  [Maple OLE 2.0 Object]  

  

Eksempel  3

  [Maple OLE 2.0 Object]  

Eksempel 4

  [Maple OLE 2.0 Object]  

Eksempel 5

[Maple Plot]

RSA-kryptering

Oppskriften

Ola  ønsker at Dolly  skal sende ham en hemmelig melding som ingen andre kan lese. Da må hun kunne RSA-kryptere  meldingen . Her er hva Ola  må gjøre:

1.   Han finner to store primtall p  og q .

2.  Han danner produktet n = pq .

3.  Han beregner phi  ( n ) = ( p - 1) ( q- 1) som inngår i   Euclid-algoritmen  :   d e  +  t  ( p - 1) ( q  - 1) = 1 , som gir han dekodingsnøkkelen   d   

4.  Han velger et positivt tall e  slik at største felles heltalls-divisor igcd ( e , phi ( n )) = 1 .

5.  Han beregner d  = 1/exp(1)   mod   phi  ( n )

6.  Han sender den offentlige nøkkelen  med tallparet [ n , e ] til Dolly .
  
Tallene   [ p , q , d , phi ( n )]  holdes hemmelig . d  er den private nøkkelen (som dekoder )

7.   Ola  forteller Dolly  hvordan Maple skal brukes for å konvertere teksten i meldingen til en sekvens av positive heltall
 
a[1]  , a[2] , . . . , a[k]  , som hver må være mindre enn n . Denne metoden vises i eksemplet under og kan gjøres offentlig

8.   Ola  ber Dolly  om å beregne b[i] = a[i] ``^e   mod   n   og sende ham sekvensen av tallene b[1] , b[2] , . . ., b[k] . Hun behøver ikke å holde alle b[i]    hemmelig etter at de er beregnet, men hun bør holde alle a[i]  hemmelig

9.  Når Ola  får sekvensen av b[i]  fra   Dolly , beregner han b[i] ``^d   mod   n ,  som da gir sekvensen a[i]    som Dolly  sendte ham.

Og    så konverterer Ola  sekvensen a[i]  til tekst og får dermed den dekrypterte meldingen fra Dolly , som vist under.

Kodingen og dekodingen

>    restart;

Bokstaver til ascii tall og motsatt

>    Melding:="Hallo Ola.  Det du driver med av kryptering er kjempebra. Nå kan jeg faktisk sende glødene hete meldinger til deg uten at det kommer frem i offentlighetens lys.

Det er kjempebra, og så har jeg også fått med meg hva kryptering er for noe rart.

Love og hilsen Dolly!";

Melding :=
Melding :=
Melding :=
Melding :=
Melding :=
Melding :=

>    convert(Melding,bytes);

[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...

>    convert(%,bytes);






Kryptering og dekryptering av en melding

De følgende kommandoer danner en RSA kryptering  ved å generere to primtall p  og q , som så brukes til å danne tallene n  og phi  ( n ) = ( p - 1) ( q- 1) ,  satt lik   f  under.

>    N:=rand(10^19..10^20-1 )();
M:=rand(10^19..10^20 -1)();

N := 77023010922798932811

M := 99676125015886537707

>    p:= nextprime(N);

p := 77023010922798932857

>    q:= nextprime(M);

q := 99676125015886537711

Vi sjekker om tallene er primtall med isprime

>    isprime(p); isprime(q);

true

true

Offentlige nøkler  ( Public key ) er n  og e  ( innkoder ):

n  skal ved modulo-regning ( mod   n ) kutte halen av (de vanvittig store) tallene.

>    n:=p*q;

n := 7677355265840900748960749281503287470327

>    length(n);

40

>    R:=rand(10^18..10^19-1 )();

R := 6942846810880840386

>    e:=nextprime(R);

e := 6942846810880840417

Euclid-algoritmen  gir oss dekodingsnøkkelen d :  

d*e+t*(p-1)*(q-1) = 1

>    f:=(p-1)*(q-1);

f := 7677355265840900748784050145564601999760

>    igcdex(e,f,'d','t');  #gir største felles nevner (må være = 1) samt d

1

>    d; #kan ikke være negativ

1469356375492416848659743078228544417633

>    igcd(e,f);

1

>    d:=1/e mod f;

d := 1469356375492416848659743078228544417633

d  må holdes strengt hemmelig ( privat ) fordi den dekoder .

>    'n'=n;

n = 7677355265840900748960749281503287470327

>    Melding; #meldingen






>    OffentligNøkkel:=n;

`OffentligNøkkel` := 7677355265840900748960749281503287470327

>    e;

6942846810880840417

>    PrivatNøkkel:=d;

`PrivatNøkkel` := 1469356375492416848659743078228544417633

>    L1:=convert(Melding,bytes);

L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...
L1 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110,...

Eksempel på tastatur tegn og tilhørende tall

Det fins  255 tegn på tastaturet . Tar vi med et mellomrom  ( space ) blir det  256 tegn .

>    convert("a",bytes), convert("A",bytes);;

[97], [65]

>    convert([1,97,65,255],bytes);

>    convert([256],bytes);

Nå konverterer vi meldingens   "byte" -liste L1  med base 256  til base n .

Hva betyr det?

Et mer kjent eksempel:

>    convert([12],base,10,2);

[0, 0, 1, 1]

0*2^0+0*2+1*2^2+1*2^3

>    0*2^0+0*2^1+1*2^2+1*2^3;

12

>    convert([64],base,10,8);

[0, 0, 1]

0*8^0+0*8+1*8^2

>    0*8^0+0*8^1+1*8^2;

64

 

>    convert([64,8,9,6],base,10,8);

[4, 0, 6, 5, 1]

64*10^0+8*10+9*10^2+6*10^3 = 4*8^0+0*8+6*8^2+5*8^3+1*8^4

>    64*10^0+8*10^1+9*10^2+6*10^3=4*8^0+0*8^1+6*8^2+5*8^3+1*8^4;

7044 = 7044

>    base_n=length(n);

base_n = 40

>    L1;

[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...
[72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114, 105, 110, 103, ...

>    L2:=convert(L1,base,256,n);

L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...
L2 := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 48031207856939505772095234...

>    map(length,L2);

[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 2]

Dollys   kodete melding  blir nå at vi anvender operatoren &^e mod n   på meldingen, dvs. på hvert element i listen L2 . Vi definerer funksjonen E  slik at   E(x) = `mod`(x^e,n) .

>    E:=x->Power(x,e) mod n;

E := proc (x) options operator, arrow; `mod`(Power(x,e),n) end proc

>    'e'=e;

e = 6942846810880840417

>    unprotect(D):

Vi gjenkaller tallkoden med

>    D:=x->Power(x,d) mod n;

D := proc (x) options operator, arrow; `mod`(Power(x,d),n) end proc

>    'd'=d;

d = 1469356375492416848659743078228544417633

La oss sjekke kodingsfunksjonen E  og dekodingsfunksjonen D .

>    60, 'E(60)'=E(60), 'D(E(60))'=D(E(60));

60, E(60) = 3279931064208647568444681233078714742458, D(E(60)) = 60

Nå kodes L2 .

>    Kryptering:=map(E, L2);

Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...
Kryptering := [2576714259252658898388759683384487899209, 2034177247788987091826286166487153932114, 7331716381998254793820200292004239337295, 4162559838686463118783731935585469225587, 438572665388642250...

Denne koden kan offentligjøres for hele verden. Dekodingen skjer via D(x) , når man har tilgang til nøkkelen d .

>    DeKryptering:=map(D,Kryptering);

DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...
DeKryptering := [7172686234289466200939559070471509604255, 6611276006364628177242037047478292774239, 7460918425552688425534106507786956389426, 4779523503634355495992515441130420242920, 4803120785693950...

Nå konverteres først  tallkoden til tall   i basen 256 .

>    DeKryptering2:=convert(DeKryptering,base,n,256);

DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...
DeKryptering2 := [72, 97, 108, 108, 111, 32, 79, 108, 97, 46, 32, 32, 68, 101, 116, 32, 100, 117, 32, 100, 114, 105, 118, 101, 114, 32, 109, 101, 100, 32, 97, 118, 32, 107, 114, 121, 112, 116, 101, 114...

Videre konvertering til bytes  gir Dollys   leselig tekst .

>    DeKryptering3:=convert(DeKryptering2,bytes);

DeKryptering3 :=
DeKryptering3 :=
DeKryptering3 :=
DeKryptering3 :=
DeKryptering3 :=
DeKryptering3 :=

>   

Automatiserte prosedyrer

>    Melding:="Til alle som vanligvis ikke vinner i Lotto!
Følgende Lottokupong går inn med full pott førstkommende lørdag:
[[1, 5, 9, 13, 27, 28, 30], [1, 10, 14, 27, 28, 29, 33], [4, 8, 11, 16, 21, 27, 32], [7, 10, 14, 24, 25, 27, 28], [4, 5, 7, 8, 19, 24, 30], [5, 17, 19, 22, 23, 33, 34], [4, 5, 12, 13, 14, 17, 19], [5, 8, 13, 22, 26, 29, 34], [2, 3, 5, 8, 24, 28, 30], [5, 17, 18, 25, 26, 31, 33]].
Hilsen fra Norsk Tipping";
 

Melding :=
Melding :=
Melding :=
Melding :=
Melding :=

>    K:=Kryptering(Melding,n,d);

K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...
K := [723783774503702797863503248049835432115953979437018031256827485817201418906376965431925223270674212809858928932589981160679521829210545489197075712431557182545110826364041153930424850974046781169...

>    n;   #offentlig nøkkel

98778316130116475409056777912866792966048963084517951830493967130811783311590091269455819166451009240108652834725710870677543184777626832671884807632841087120403947041948444999201814903442329962599
98778316130116475409056777912866792966048963084517951830493967130811783311590091269455819166451009240108652834725710870677543184777626832671884807632841087120403947041948444999201814903442329962599

>    d;  #privat nøkkel

43556524144640242737977216908118960656210187293737025666063415184951535021307163782367373386725314936639649835262447640563343640173605973825440344178285285074386930884297251458309131247345960606881
43556524144640242737977216908118960656210187293737025666063415184951535021307163782367373386725314936639649835262447640563343640173605973825440344178285285074386930884297251458309131247345960606881

>    DeKryptering(K,n,d);