conversaoRSA.mws

Conversão texto - inteiros

(usando a tabela da cifra de César)

30/09/07

>    para_numero := proc(mensagem)

               local sl, cn, sn, ii, ntable;

               ntable := table(['a'=0, 'b'=1, 'c'=2, 'd'=3, 'e'=4, 'f'=5, 'g'=6, 'h'=7, 'i'=8, 'j'=9, 'l'=10,

                                         'm'=11, 'n'=12, 'o'=13, 'p'=14, 'q'=15, 'r'=16, 's'=17, 't'=18, 'u'=19, 'v'=20, 'x'=21, 'z'=22]):

               sl := length(mensagem);

               cn := 0;

             for ii from 1 to sl do

                   sn := ntable[substring(mensagem,ii..ii)]:

                         cn := 100*cn + sn:

               od:

             RETURN(cn):

    end:

>    para_numero(fugirdepressa);

5190608160304141604171700

>    para_numero(returntoheadquarters);

1604181916121813070400031519001618041617

>    para_letra := proc(num)

               local sl, cs, cn, sn, a, b, c, d, e, f, g, h, i, j, l, m, n, o, p, q, r, s, t, u, v, x, z, ltable, ans;

               ltable := table([0=a, 1=b, 2=c, 3=d, 4=e, 5=f, 6=g, 7=h, 8=i, 9=j, 10=l,

                                         11=m, 12=n, 13=o, 14=p, 15=q, 16=r, 17=s, 18=t, 19=u, 20=v, 21=x, 22=z]);

               cn := num;

               sl := floor(trunc(evalf(log10(cn)))/2) + 1:

               ans := ``;

             for i from 1 to sl do

                         cn := cn/100;

                   cs := ltable[frac(cn)*100];

                         ans := cat(cs, ans);

                         cn := trunc(cn);

               od:

             RETURN(ans):

    end:

>    para_letra(5190608160304141604171700);

fugirdepressa

>    para_letra(1604181916121813070400031519001618041617);

returntoheadquarters

>    para_numero(estudemestruturasdiscretas);

417181903041104171816191819160017030817021604180017

>    para_letra(417181903041104171816191819160017030817021604180017);

estudemestruturasdiscretas