grazie...
cmq quella funzione faceva parte di quest'obbrobrio della natura che vorrebbe essere una dimostrazione della crittografia rsa(ambizioso come primo scriptino in jscript???
)
soltanto che nell'ultima fase...forse per colpa dei numeri troppo grossi nn riesce a decrittarmi il messaggio...(nel caso vogliate testarlo si scrivono dei caratteri nel primo form in alto, 2 numeri primi sotto e poi si fa partire...fa apparire un bel po' di alert con dentro le variabili(utili mentre si programmano poi le toglierò)...quando funzionerà mi dedicherò anche a togliere tutte le parti commentate...
codice:
<html>
<head>
<script language="JavaScript">
//Begin
/*function showkeycode()
{
word ="";
ascii=new Array();
lett=new Array();
for(i=0;i<document.characterCode.character.value.length;i++)
{
ascii[i]=document.characterCode.character.value.charCodeAt(i);
document.pqe.write("<input type=\"hidden\" name=\"asciival"+i+"\" value=\""+ascii[i]+"\" />");
lett[i]=String.fromCharCode(ascii[i]);
word=word+lett[i];
alert(ascii[i]);
}
}*/
function MakeArray(n)
{
this.length = n
for (var i=1;i<=n;i++)
{
this[i]=0
}
return this
}
function checknum()
{
if (document.MCD.nval.value =="") return;
if (document.MCD.mval.value=="") return;
k = parseInt(document.MCD.nval.value)
j = parseInt(document.MCD.mval.value)
if (k=="NaN") return;
if (j=="NaN") return;
if (k==0) return;
if (j==0) return;
if (isNaN(k)) return
if (isNaN(j)) return
document.MCD.mcd.value =k
n=maxcd(k,j);
alert (n);
document.MCD.mcd.value = n;
if (n!=1)
{
alert("i numeri non sono validi.");
//critt(originaln,originalm);
}
else
{
u=critt(k,j);
alert ("e è: "+u);
}
return;
}
function maxcd(n,m)
{
//document.pqe.mcd.value =""
Quot = new MakeArray(50)
//document.pqe.Algor.value = ""
/*if (document.pqe.nval.value =="") return;
if (document.pqe.mval.value=="") return;
n = parseInt(document.pqe.nval.value)
m = parseInt(document.pqe.mval.value)
if (n=="NaN") return;
if (m=="NaN") return;
if (n==0) return;
if (m==0) return;
if (isNaN(n)) return
if (isNaN(m)) return
document.pqe.mcd.value =n*/
//takinnames();
if (n < m)
{
z = n
n = m
m = z
//document.pqe.nval.value = n
//document.pqe.mval.value = m
}
originaln = n
originalm = m
xstep = 1
r = 1
while ( r != 0)
{
r=n%m
//q = Math.floor(n/m)
//r = n - m*q
//ShowStep (n,m,q,r)
n = m
m = r
//Quot[xstep]=q
//++xstep
}
//document.pqe.mcd.value = n
//if (n=1) critt(originaln,originalm);
//else document.write("i numeri non sono validi.");
//setgcd(n)
//gcd = n
a =1
c = 0
for (i=xstep; i>0; i--)
{
z = c - Quot[i]*a
c = a
a = z
}
return (n);
//theCombo = " "+gcd+" = " +a+"*"+originalm+" + "+b+"*"+originaln
//document.pqe.lincom.value = theCombo
//lcm = originaln*originalm/gcd
//document.pqe.lcm.value = lcm
}
function getnum ()
{
a=document.pqe.aval.value;
prima=primo(a);
b=document.pqe.bval.value;
primb=primo(b);
if ((prima) && (primb)) {critt (a,b);}
}
function primo (x)
{
var risultato = "";
var primo = true;
var i = 2;
var j;
while ((i < x) && primo)
{
j = x / i;
j = Math.floor (j);
j = x - (j * i);
if (j == 0)
{
primo = false;
}
else
{
i++;
}
}
if (!(primo))
{
risultato = risultato
+ x
+ " non è un numero primo!";
alert (risultato);
}
/*else
{
risultato = risultato
+ x
+ " non è un numero primo!";
alert (risultato);
}*/
return(primo);
}
function critt(x,y)
{
word ="";
ascii=new Array();
lett=new Array();
for(i=0;i<document.characterCode.character.value.length;i++)
{
ascii[i]=document.characterCode.character.value.charCodeAt(i);
alert(ascii[i]);
}
n=x*y;
x1=x-1;
y1=y-1;
b=x1*y1;
alert ("b= "+b);
e=1;
r1=0;
r2=0;
while ((r1!=1)||(r2!=1))
{
e++;
r1=maxcd(e,x1);
//r1=e%x1;
//s1 = Math.floor(e/x);
//r1 = e - x*s1;
//alert("r1= "+r1);
r2=maxcd(e,y1);
//r2=e%y1;
//s2 = Math.floor(e/y);
//r2 = e - y*s2;
//alert("r2= "+r2);
}
alert ("e= "+e);
f=0;
chk="";
do
{
f++;
d=(b*f+1)/e;
chk=d-parseInt(d);
alert("f= "+f);
alert("d= "+d);
alert("chk= "+chk);
}
while (chk!=0);
alert ("d int è = "+d);
me=new Array();
c=new Array();
for (i=0;i<document.characterCode.character.value.length;i++)
{
me[i]=Math.pow(ascii[i],e);
alert("m^e= "+me[i]);
c[i]=me[i]%n;
alert("il messaggio crittato è "+c[i]);
}
cd=new Array();
decritt=new Array();
for (i=0;i<document.characterCode.character.value.length;i++)
{
cd[i]=Math.pow(c[i],d);
alert("c^d= "+cd[i]);
decritt[i]=cd[i]%n;
lett[i]=String.fromCharCode(decritt[i]);
word=word+lett[i];
}
alert("il messaggio originale è: "+word);
//return (e);
//while (r1=0 || r2=0)
//s1 = Math.floor(e/x)
//r1 = e - x*s1
//s2 = Math.floor(e/y)
//r2 = e - y*s2
}
/*function power(l,z)
{
w=1;
for (i=0;i<z;i++)
{
w=w*l;
}
return(w)
}*/
/*function ShowStep(n,m,q,r)
{
SoFar = document.GCD.Algor.value
thisStep = " " + n+" = " +m + "*" + q+" + "+r
SoFar = SoFar+"\n"+thisStep
document.GCD.Algor.value = SoFar
}*/
/*function setgcd(x)
{
document.GCD.gcd.value = x
}*/
//function showchar()
//{
// for(i=0;i<lett.length;i++)
// {
// alert(word);
// }
//}
//End
</script>
</head>
<body>
<div align="center">
<form name="characterCode">
Digita un carattere:
<input type="text" name="character" size="15">
<!--<input type="button" value="Mostra il codice ASCII" onClick="showkeycode();">
<input type="button" value="Mostra il carattere ASCII" onClick="alert(word);">-->
</form>
<form name="pqe">
<input type="button" name="Goo" value="Clicca qui per eseguire il calcolo" onclick="getnum()">
<input type="reset" name="reset2" value="Cancella">
<input type="text" name="aval" size="15">
<input type="text" name="bval" size="15">
</form>
</div>
</body>
</html>