javascript array adgangskontrol
Jeg sidder og kæmper med et skoleprojekt hvor jeg laver en form for "krypering" af et password. Idéen er at man opretter et password ved hjælp af en side (i mit tilfælde siden createpass.htm) og for en "krypteret" talværdi som skal angives i index.htm filen. "krypteringen" består i at ASCII værdien omdannes til en talværdi gennem nogle matematiske funktioner. For at komme ind på den skjulte side skal man så vide passwordet. Det er ikke muligt at kopiere talværdien fra kildekoden og bruge det som password. Mit spørgsmål er nu, om der er nogen der kan hjælpe mig med en forklaring på nogen af de matematiske funktioner, da jeg har fundet det meste af koden på en java tutorial side (http://javascript.internet.com/passwords/password-pro-in.html) og ikke kender så meget til de matematiske funktioner i JavaScript. hovedsageligt drejer det sig om udtryk som f[x]=x<<9 hvor jeg har forstået det som at pladsen x i arrayet f defineres, men hvad gør << tegnene i dette eksempel? (Koden skal læses før eksemplet gir mening) og efterfølgende f[x]+=12 ser ganske simpelt ud, men + tegnet på den side af lighedstegnet kan jeg ikke forstå.På forhånd mange tak for hjælpen, hilsen en Java Begynder Sebastian :o)
<SCRIPT LANGUAGE="JavaScript">
var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
var pass=""
var z=12;
var y=17;
var f= new Array();
var K= new Array();
for (x=0; x<10; x++){
f[x]=x<<9
f[x]+=12
}
for (x=10; x<36; x++){
y=y<<1
v= Math.sqrt(y)
v = parseInt(v,16)
v+=5
f[x]=v
y++
}
for (x=36; x<62; x++){
z=z<<1
v= Math.sqrt(z)
v = parseInt(v,16)
v+=74
f[x]=v
z++
}
var iCounter = 3 //Antal indtastningsforsøg
function inc(){
iCounter--
if (iCounter > 0)
{
if (confirm("\nAdgangskode findes ikke i systemet\n\n\n\nIndtast igen?"))
Check()
else
alert('Ingen adgang');
history.go(-1);
location.href='index.htm' //Når der annulleres nyt adgangskodeforsøg
}
else
alert('Dine tre forsøg er brugt op - ADGANG NÆGTET');
history.go(-1);
location.href='forkert.htm' // 3 gange forkert login => forkert.htm fil
}
function Check(){
pass = prompt("Indtast din adgangskode","")
if(pass==null || pass==""){
history.go(-1)}
else{
var lpass=(pass.length)+1
for (l=1; l<lpass; l++){
K[l]=pass.charAt(l)
}
var code=0;
for (y=1; y<lpass; y++){
for(x=0; x<62; x++){
if (K[y]==base[x]){
code+=f[x]
code*=y
}
}
}
<!-- Her er den krypterede adgangkode defineret! -->
if (code==32755779) // code=[den valgte kode i createpass.htm omdannet til tal]
go()
else
inc()
}
}
function go(){
location.href=pass+".htm";
}
</SCRIPT>
For at "kryptere" et password benyttes stort set samme script plus et ekstra make() afsnit:
<Script language="JavaScript">
var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
var code=0;
var z=12;
var y=17;
var f= new Array();
var K= new Array();
for (x=0; x<10; x++){
f[x]=x<<9
f[x]+=12
}
for (x=10; x<36; x++){
y=y<<1
v= Math.sqrt(y)
v = parseInt(v,16)
v+=5
f[x]=v
y++
}
for (x=36; x<62; x++){
z=z<<1
v= Math.sqrt(z)
v = parseInt(v,16)
v+=74
f[x]=v
z++
}
function make(){
var pass = prompt("Indtast valgfri adganskode","")
if (pass==null || pass==""){
exit()}
else{
var code=0;
var lpass=(pass.length)+1
if (lpass<5){
alert("Indtast venligst en adgangskode på mere end 3 characters");
make()}
else{
if (lpass>9){
alert("Ugyldig adgangskode\n\nMaks 8 characters");
make()}
else{
for (l=1; l<lpass; l++){
K[l]=pass.charAt(l)
}
for (y=1; y<lpass; y++){
for(x=0; x<62; x++){
if (K[y]==base[x]){
code+=f[x]
code*=y
}
}
}
alert("Din adgangskode er: "+code+"\n\n\nSkriv den ned!\n\n\nDu får brug for den senere!");
alert("Husk at oprette din sikre side, "+pass+".htm");
}
}
}
}
function exit(){
if (confirm("Vil du annullere?")){
history.back()}
else{
make()}
}
</Script>
