webForumDet fria alternativet

Enkelt chiffer

5 svar · 467 visningar · startad av ozzan

ozzanMedlem sedan maj 20038 inlägg
#1

Hejsan
Hur ska jag göra om jag vill göra en sida där jag skriver in t.ex. hej och det kommer ut som ifk. Alltså att alla bokstäver förflyttas en ner i alfabetet. Jag hade tänkt mig en sida där det är två <form>s. Ett där man skriver in ordet som ska chiffras och ett, kanske med READONLY taggen, där det kommer ut chiffrat.
Hur löser jag detta? Tänkte någonting i en function(JS) i första <form>en som riktar sig mot den andra <form>en.
Tacksam för alla svar.
mvh Ozzan

ejickMedlem sedan mars 20011 175 inlägg
#2

Ingen aning.. Men här har du hur man gör om det till rövarspråket.
http://hem.passagen.se/daan9130/portfolio/js_dhtml/oversattareVER1/index.html

dectgapMedlem sedan sep. 20021 542 inlägg
#3
<script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";

function chiffrera(objFrom, objTo){
    var strFrom = objFrom.value;
    var strTo = "";
    var currChar;
    for(var i=0; i<strFrom.length; i++){
        currChar = strFrom.charAt(i);
        if(charsLower.indexOf(currChar)!=-1)
            strTo += charsLower.charAt((charsLower.indexOf(currChar)==28)?0:charsLower.indexOf(currChar)+1);
        else if(charsUpper.indexOf(currChar)!=-1)
            strTo += charsUpper.charAt((charsUpper.indexOf(currChar)==28)?0:charsUpper.indexOf(currChar)+1);
        else
            strTo += currChar;
    }
    objTo.value = strTo;
}
</script>

...

<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to)" value="Chiffrera" />
</form>

Det kan förmodligen göras enklare, men detta fungerar iaf.

dectgapMedlem sedan sep. 20021 542 inlägg
#4

Uppdaterat:

<script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";

function chiffrera(objFrom, objTo, objOffset){
    var strFrom = objFrom.value;
    var offset = parseInt(objOffset.value) || 0;
    var strTo = "";
    var currChar, charOffset;
    for(var i=0; i<strFrom.length; i++){
        currChar = strFrom.charAt(i);
        if(charsLower.indexOf(currChar)!=-1)
            strTo += charsLower.charAt((charsLower.length+(charsLower.indexOf(currChar)+offset))%charsLower.length);
        else if(charsUpper.indexOf(currChar)!=-1)
            strTo += charsUpper.charAt((charsLower.length+(charsUpper.indexOf(currChar)+offset))%charsUpper.length);
        else
            strTo += currChar;
    }
    objTo.value = strTo;
}
</script>

...

<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to, this.form.offset)" value="Chiffrera" />
<input type="text" name="offset" />
</form>

Nu kan du själv ange hur många tecken alfabetet ska förskjutas. Negativa värden är tillåtna.

ozzanMedlem sedan maj 20038 inlägg
#5

Hmm, Det låter bra det! Men kan man göra så att det finns två knappar? En som chiffrar och en som dechiffrar.. Föresten går det på nåt enkelt sätt att göra så att även siffrorna förskjuts?

dectgapMedlem sedan sep. 20021 542 inlägg
#6
<script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";

function chiffrera(objFrom, objTo, objOffset){
    var strFrom = objFrom.value;
    var strTo = "";
    var currChar, charOffset, numOffset, offset;

    offset  = parseInt(objOffset.value) || 0;
    
    charOffset = numOffset = offset;
    
    while(charOffset<0)
        charOffset += charsLower.length;

    while(numOffset<0)
        numOffset += 10;

    for(var i=0; i<strFrom.length; i++){
        currChar = strFrom.charAt(i);
        if(charsLower.indexOf(currChar)!=-1)
            strTo += charsLower.charAt((charsLower.length+(charsLower.indexOf(currChar)+charOffset))%charsLower.length);
        else if(charsUpper.indexOf(currChar)!=-1)
            strTo += charsUpper.charAt((charsLower.length+(charsUpper.indexOf(currChar)+charOffset))%charsUpper.length);
        else if(/\d/.test(currChar))
            strTo += (numOffset+parseInt(currChar))%10;
        else
            strTo += currChar;
    }
    objTo.value = strTo;
}
</script>

...

<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to" readonly="readonly"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to, this.form.offset)" value="Chiffrera" />
<input type="text" name="offset" />
</form>

Om du vill dechiffrera något är det bara att skriva -1*nyckeln i rutan bredvid Chiffrera-knappen.
Om du förskjutet alfabetet 2 steg skriver du alltså istället -2 för att dechiffrera.

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb