Sie sind auf Seite 1von 7

Mario Adhi Pratomo | J2F008115

a. Source Code
<html>
<head>
<title>Caesar Cipher</title>
</head>
<body>
<script>
var MCarr=new Array(
"*","|",".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.",".-..","--","-.","---",
".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","----",".----","..---","...--","....-",
".....","-....","--...","---..","----."
);
var ABC012arr="*|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
function DoMorseDecrypt(x)
{mess="";apos=0;bpos=0;
while(bpos<x.length)
{
bpos=x.indexOf(" ",apos);if(bpos<0){bpos=x.length};
dits=x.substring(apos,bpos);apos=bpos+1;let="";
for(j=0;j<MCarr.length;j++){ if(dits==MCarr[j]){let=ABC012arr.charAt(j)}
};
if(let==""){let="*"};
mess+=let;
};
return mess;
};
function DoMorseEncrypt(x)
{mess="";
for(i=0;i<x.length;i++)
{
let=x.charAt(i).toUpperCase();
for(j=0;j<MCarr.length;j++){ if(let==ABC012arr.charAt(j)){mess+=MCarr[j]}
};
mess+=" ";
};
mess=mess.substring(0,mess.length-1);
return mess;
};
function DoReverse(x){y="";for(i=0;i<x.length;i++){y+=x.charAt(x.length-1i);};return y};
function DoCaeserEncrypt(x,shf)
{
abc="abcdefghijklmnopqrstuvwxyz";
ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
r1="";r2="";shf=eval(shf);
for(i=0;i<x.length;i++){let=x.charAt(i);pos=ABC.indexOf(let);if(pos>=0){r1+
=ABC.charAt( (pos+shf)%26 )}else{r1+=let};};
for(i=0;i<r1.length;i++){let=r1.charAt(i);pos=abc.indexOf(let);if(pos>=0){r
2+=abc.charAt( (pos+shf)%26 )}else{r2+=let};};
return r2;
};
function DoCaeserDecrypt(x,shf)
{return DoCaeserEncrypt(x,26-shf);};

Kriptografi

Page 1

Mario Adhi Pratomo | J2F008115

function MakeCipherABC(abc,key1)
{
abc=abc.toUpperCase();key1=key1.toUpperCase();
cyabc=key1+abc;
for(i=0;i<abc.length;i++){let=cyabc.charAt(i);pos=cyabc.indexOf(let,i+1);
while(pos>1){cyabc=cyabc.substring(0,pos)+cyabc.substring(pos+1,cyabc.length);pos=cya
bc.indexOf(let,i+1);};};
return cyabc;
}
function DoVigenere(et,key1,key2,abc,dir,vigtype,altluabc)
{dt="";et=et.toUpperCase();key1=key1.toUpperCase();key2=key2.toUpperCase();
abc=abc.toUpperCase();dir=dir.toUpperCase();
pos=et.indexOf(" ");
while(pos>1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf("
");};
cyabc=MakeCipherABC(abc,key1);
key1=cyabc;
lu=cyabc;
if(vigtype=="N"){lu=abc};
if(vigtype=="K"){lu=cyabc};
if(vigtype=="A"){lu=altluabc};
for(i=0;i<et.length;i++)
{let=et.charAt(i);letinabc=abc.indexOf(let);
if(letinabc<0){dt+=let;et=et.substring(0,i)+et.substring(i+1,et.length);i-}
else{
if(dir=="E"){dt+=lu.charAt((key1.indexOf(let)+key1.length+key1.indexOf(key2
.charAt(i%key2.length)))%key1.length);};
if(dir=="D"){dt+=lu.charAt((key1.indexOf(let)+key1.lengthkey1.indexOf(key2.charAt(i%key2.length)))%key1.length);};};
};
return dt;};
function DoFreqCnt(x,abc)
{var i,abc,pos,freqs;
pos=x.indexOf(" ");while(pos>1){x=x.substring(0,pos)+x.substring(pos+1,x.length);pos=x.indexOf(" ");};
x=x.toUpperCase();freqs="";
letarr=new Array("");
for(i=0;i<abc.length;i++){letarr[i]=0;};
for(i=0;i<x.length;i++){letarr[abc.indexOf(x.charAt(i))]++};
for(i=0;i<abc.length;i++){freqs+=abc.charAt(i)+":"+letarr[i]+"/"+x.length+"
="+letarr[i]/x.length+"\n";};
return freqs;
}
function DoRowColumnTranspose(et,rowcol,jump,startrow)
{dt="";if((et=="")||(rowcol=="")||(jump=="")||(startrow=="")){dt="You must
supply all values";return dt;}
maxrow=eval(rowcol.substring(0,rowcol.indexOf(",")));
maxcol=eval(rowcol.substring(rowcol.indexOf(",")+1,rowcol.length));
jump=eval(jump);startrow=eval(startrow);
if(startrow>maxrow){dt="Start Row must be <= Max Rows";return dt;}
lin=new Array("");

Kriptografi

Page 2

Mario Adhi Pratomo | J2F008115


for(i=0;i<maxrow;i++){lin[i]=et.substring(maxcol*i,maxcol*(i+1))};
row=startrow-1;col=maxcol-1;//starting point
for(i=0;i<(maxrow*maxcol);i++)
{dt+=lin[row].charAt(col);
row=row+jump;
while(row>=maxrow){row-=maxrow;col-=1;};
while(col<=-1){col+=maxcol;row-=1;};
while(row<=-1){row+=maxrow;col-=1;};
while(col>=maxcol){col-=maxcol;row-=1;};
};
return dt;};
function DoModTranspose(et,startlet,jumpinc,modulus)
{dt="";if((et=="")||(startlet=="")||(jumpinc=="")||(modulus=="")){dt="You
must supply all values";return dt;}
startlet=eval(startlet)-1;jumpinc=eval(jumpinc);modulus=eval(modulus);
if(startlet>modulus){dt="startlet must be <= maxchar";return dt;}
et=escape(et);
pos=et.indexOf("%0D");
while(pos>1){et=et.substring(0,pos)+et.substring(pos+3,et.length);pos=et.indexOf("%0D
");};
pos=et.indexOf("%0A");
while(pos>1){et=et.substring(0,pos)+et.substring(pos+3,et.length);pos=et.indexOf("%0A
");};
et=unescape(et);
for(i=0;i<(modulus);i++){dt+=et.charAt((startlet+jumpinc*i)%modulus);};
return dt;};
function DoAsciiHex(x,dir)
{hex="0123456789ABCDEF";almostAscii=' !"#$%&'+"'"+'()*+,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ['+'\\'+']^_`abcdefghijklmnopq
rstuvwxyz{|}';r="";
if(dir=="A2H")
{for(i=0;i<x.length;i++){let=x.charAt(i);pos=almostAscii.indexOf(let)+32;h1
6=Math.floor(pos/16);h1=pos%16;r+=hex.charAt(h16)+hex.charAt(h1);};};
if(dir=="H2A")
{for(i=0;i<x.length;i++){let1=x.charAt(2*i);let2=x.charAt(2*i+1);val=hex.in
dexOf(let1)*16+hex.indexOf(let2);r+=almostAscii.charAt(val-32);};};
return r;
};
function DoSubstitute(x,orig,sub,dir)
{
x=x.toUpperCase();r="";
if(dir=="e")
{for(i=0;i<x.length;i++){let=x.charAt(i);pos=orig.indexOf(let);if(pos>1){r+=sub.charAt(pos)}else{r+=let}}};
if(dir=="d")
{for(i=0;i<x.length;i++){let=x.charAt(i);pos=sub.indexOf(let);if(pos>1){r+=orig.charAt(pos)}else{r+=let}}};
return r;
};
function SwitchEm(x,a,b)
{
posA=x.indexOf(a);

Kriptografi

Page 3

Mario Adhi Pratomo | J2F008115


posB=x.indexOf(b);
r1=x.substring(0,posA)+b+x.substring(posA+1,x.length);
r2=r1.substring(0,posB)+a+r1.substring(posB+1,r1.length);
return r2;
};
function MakePlayfairSquare(abc,key1)
{
cyabc=MakeCipherABC(abc,key1);
row = new Array();for(i=0;i<5;i++){row[i]=""};
for(i=0;i<5;i++){for(j=0;j<5;j++)row[i]+=cyabc.charAt(5*i+j);};
sqr="";for(i=0;i<5;i++){sqr+=row[i]+"\n"};
return sqr;
};
function DoPlayfair(et,abc,key1,dir,dup)
{
et=et.toUpperCase();abc=abc.toUpperCase();key1=key1.toUpperCase();
pos=et.indexOf(" ");
while(pos>1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf("
");};
pos=et.indexOf("?");
while(pos>1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf("?")
;};
for(i=0;i<et.length;i=i+2)
{let1=et.charAt(i);let2=et.charAt(i+1);if(let1==let2){et=et.substring(0,i+1
)+"X"+et.substring(i+1,et.length)};};
if( (et.length%2)==1 ){et+='X'}
if(dup!=""){
pos=et.indexOf(dup);
while(pos>1){et=et.substring(0,pos)+"I"+et.substring(pos+1,et.length);pos=et.indexOf(
dup);};
};
cyabc=MakeCipherABC(abc,key1)
row=new Array();for(i=0;i<5;i++){row[i]=""};
for(i=0;i<5;i++){for(j=0;j<5;j++)row[i]+=cyabc.charAt(5*i+j);};
shf=1;if(dir=="E"){shf=1};if(dir=="D"){shf=4};
dt="";
for(i=0;i<et.length;i=i+2)
{
pos1=cyabc.indexOf(et.charAt(i));pos2=cyabc.indexOf(et.charAt(i+1));
x1=pos1%5;y1=Math.floor(pos1/5);x2=pos2%5;y2=Math.floor(pos2/5);
if(y1==y2){x1=(x1+shf)%5;x2=(x2+shf)%5}
else if(x1==x2){y1=(y1+shf)%5;y2=(y2+shf)%5}
else{temp=x1;x1=x2;x2=temp};
dt+=row[y1].charAt(x1)+row[y2].charAt(x2) ;
};
return dt;
};

Kriptografi

Page 4

Mario Adhi Pratomo | J2F008115

</script>
<form name="CaeserForm">
<table border="1">
<tr>
<td>
<p align="center">
<b><font color="#000000">Caesar Shift Code Encrypted Message
System</font></b>
</td>
</tr>
<tr>
<td>
Shift Value (0-26):<input type="text" name="CShift" size="5"
value="3">
<input type="reset" value="Reset">
</td>
</tr>
<tr>
<td>
<br>
<textarea rows="6" name="CaeserOrig" cols="97"></textarea><br>
Original:
<input type="button" value="Decrypt: V" name="CaeserDecryptBut"
onClick="CaeserDecrypt.value=DoCaeserDecrypt(CaeserOrig.value,CShift.value)
">
<input type="button" value="Reverse Message"
onClick="CaeserOrig.value=DoReverse(CaeserOrig.value)">
</td>
</tr>
<tr>
<td>
<br>
<textarea rows="6" name="CaeserDecrypt"
cols="97"></textarea><br>
Decrypted: <input type="button" value="Encrypt: V"
name="CaeserEncryptBut"
onClick="CaeserEncrypt.value=DoCaeserEncrypt(CaeserDecrypt.value,CShift.val
ue)">
</td>
</tr>
<tr>
<td>
<br>
<textarea rows="6" name="CaeserEncrypt" cols="97"></textarea>
<br>
Encrypted: <input type="button" value="Move to Top"
name="MoveBut" onClick="CaeserOrig.value=CaeserEncrypt.value">
</td>
</tr>
</table>
</form>
</body>
</html>

b. Screenshot
Kriptografi

Page 5

Mario Adhi Pratomo | J2F008115


1. Tampilan awal

2. Enkripsi dan Dekripsi

Kriptografi

Page 6

Mario Adhi Pratomo | J2F008115

3. Reverse Message

Kriptografi

Page 7

Das könnte Ihnen auch gefallen