• Tidak ada hasil yang ditemukan

LAMPIRAN A : LISTING PROGRAM

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN A : LISTING PROGRAM"

Copied!
10
0
0

Teks penuh

(1)

LAMPIRAN A : LISTING PROGRAM

File : chrome.manifest

content addonta chrome/

style chrome://global/content/customizeToolbar.xul chrome://addonta/content/button.css # Thunderbird compose Overlay chrome://messenger/content/messengercompose/ messengercompose.xul chrome://addonta/content/button.xul

File : install.rdf

<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest" em:name="Massey Omura Cryptosystem"

em:description="Add On Keamanan EMail dengan Massey Omura Cryptosystem"

em:creator="Tengku Surya Pramana" em:id="masseyomura@gmail.com" em:version="2.0" em:iconURL="chrome://addonta/content/icon.png" > <em:targetApplication><!-- Thunderbird --> <Description em:id="{3550f703-e582-4d05-9a08-453d09bdfdc6}" em:minVersion="3.0" em:maxVersion="26.0" /> </em:targetApplication> <em:file> <Description about="urn:mozilla:extension:addonta" em:package="content/addonta/" /> </em:file> </Description> </RDF>

(2)

File : button.css

#button-enkripsi, #wrapper-button-enkripsi {list-style-image: url("chrome://addonta/content/buttonenkripsi.png");} .addonta {-moz-image-region: rect( 0px 24px 24px 0px);} .addonta:hover {-moz-image-region: rect(24px 24px 48px 0px);} [iconsize="small"] .addonta {-moz-image-region: rect( 0px 40px 16px 24px);} [iconsize="small"] .addonta:hover {-moz-image-region: rect(24px 40px 40px 24px);} #button-dekripsi, #wrapper-button-dekripsi {list-style-image: url("chrome://addonta/content/buttondekripsi.png");} .addonta {-moz-image-region: rect( 0px 24px 24px 0px);} .addonta:hover {-moz-image-region: rect(24px 24px 48px 0px);} [iconsize="small"] .addonta {-moz-image-region: rect( 0px 40px 16px 24px);} [iconsize="small"] .addonta:hover {-moz-image-region: rect(24px 40px 40px 24px);}

button.xul

/*Referensi utama perancangan dokumen XUL overlay diperoleh pada https://developer.mozilla.org/ */ <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/css" href="chrome://addonta/content/button.css"?> <!DOCTYPE overlay > <overlay id="addonta-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <script type="application/javascript" src="chrome://addonta/content/MasseyOmura.js"/> <!-- Thunderbird compose -->

(3)

<toolbarpalette id="MsgComposeToolbarPalette"> <toolbarbutton id="button-enkripsi"/> <toolbarbutton id="button-dekripsi"/> </toolbarpalette> <!-- button details --> <toolbarbutton id="button-enkripsi" label="Enkripsi"

tooltiptext="Digunakan untuk melakukan Enkripsi pada pesan" oncommand="Massey.enkripsi()"

class="toolbarbutton-1 chromeclass-toolbar-additional addonta" />

<toolbarbutton id="button-dekripsi" label="Dekripsi"

tooltiptext="Digunakan untuk melakukan Dekripsi pada pesan" oncommand="Massey.dekripsi()"

class="toolbarbutton-1 chromeclass-toolbar-additional addonta" />

</overlay>

File : MasseyOmura.js

var Massey={

getBodyText: function(){ //untuk mengambil teks dari body email var editor = window.gMsgCompose.editor;

var text = editor.outputToString('text/plain', editor.eNone) return text;

},

splittt: function(){

var karakter = this.getBodyText(); var kalimat = "";

var hasil = ""; var e = new Array;

e = karakter.split("\r\n"); var n = e.length;

if(karakter==""){

window.alert("Anda belum mengetikkan pesan !!!"); }

else{

for (var i=0; i<e.length; i++){ } if (e[n-1] == ""){ e.pop(); } var m = e.length; if(m == 1){ kalimat = e[0]; hasil = kalimat;

(4)

} else{

var a = m-1;

for ( var i=0; i < m-1; i++){ kalimat = e[i];

hasil = hasil+kalimat+"#"; }

hasil = hasil + e[a]; }

return hasil; }

},

getDecimalfromASCII: function(){//untuk mengambil nilai desimal dari kode ASCII

var karakter =this.splittt(); var simpan = new Array();

for(var i=0; i<karakter.length; i++){ var kar = karakter.charAt(i); var decimal = kar.charCodeAt(0); simpan[i]=decimal;

}

return simpan; // simpan semua array (m) },

getASCIIfromDecimal: function(masukan){ //untuk mengubah nilai desimal ke dalam kode ASCII

var karakter = masukan; var simpan = new Array();

for(var i=0; i<karakter.length; i++){ var kar = karakter[i];

var ascii = String.fromCharCode(kar); simpan[i]=ascii;

}

return simpan; },

expmod: function(base, exp, mod){ // modulo eksponensial if (exp == 0) return 1;

if (exp % 2 == 0){

return Math.pow((this.expmod(base, (exp / 2), mod)), 2) % mod;

} else {

return (base * (this.expmod( base, (exp - 1), mod))) % mod;

} },

lehmann: function() { //untuk menghasilkan bilangan prima dengan LPG var prima=false; var count=0; var p; var a=[2,3,5,7,11,13,17,19,23,29,31,37]; var L; var pangkat;

(5)

var JumlahDigitPrima; var cekP=false; var cekA=false; var str; var bil1=""; var bil2=""; var bil3=""; var bil4=""; var cek=false; while (prima==false){ cekP=false; while (cekP==false){ p=Math.floor((Math.random()*10000000)+1); if ((p%2)!=0){ cekP=true; } } bil4 = p; str = p.toString(); JumlahDigitPrima = parseInt(str.length); for (var i=0; i<JumlahDigitPrima; i++){

bil1 = a[i]+"-"+p+" "+bil1; pangkat=(p-1)/2; var ab = this.expmod(a[i],pangkat,p); if (ab<0){ L=ab+p; } else{ L=ab; } bil2 = L+"-"+p+" "+bil2; if ((L==1)){ prima=true; } else{ var x; x=L-p; bil3=x+"-"+p+" "+bil3; if (x==(-1)){ prima=true; } else{ prima=false; break; } } } } return bil4; },

kuncidA: function(p, eA){ //untuk menghasilkan kunci dekripsi var dA = 1;

(6)

while(hasildA!=1){ var b = dA*eA; dA++; hasildA = b % (p-1); } return (dA-1); }, gcd: function(x, y){ while (y!=0){ var z = x % y; x = y; y = z; } return x; },

encryptkey: function(p){ //untuk menghasilkan kunci enkripsi var hasil = 0;

var prima = p; while (hasil!=1){

var eA = Math.floor((Math.random()*1000000)+1); while (eA < 2 || eA > prima-1){

eA = Math.floor((Math.random()*1000000)+1); } hasil = this.gcd(eA,prima-1); } return eA; },

decryptkey: function(p, eA){ var dA;

var prima = p;

dA = this.kuncidA(prima, eA); return dA;

},

simpan: function(p,eA){ //untuk menyimpan bilangan prima dan kunci enkripsi

var dAKey = this.decryptkey(p,eA); var prime = p;

var savekey = prime +" "+ dAKey; var binKey = savekey;

var dir = FileIO.get('ProfD');

var fin='\\extensions\\savedKey.txt'; var path=dir.path + fin;

var fileIn = FileIO.open(path); FileIO.write(fileIn,binKey); },

getKey: function(){ //untuk mengambil kunci enkripsi var dir = FileIO.get('ProfD');

var fin='\\extensions\\savedKey.txt'; var path=dir.path + fin;

(7)

var ambilkunci = FileIO.read(fileIn); var str = ambilkunci.split(" "); return str;

},

enkripsi: function(){

var cipher = new Array(); var prima;

var C1;

var hasil ="";

var teksss = new Array();

//Mendapatkan teks yg ada di body var karakter = this.splittt();

//Mengambil karakter terakhir dari teks tersebut var stringLength = karakter.length;

var akhir = stringLength - 1; var akhir2;

var lastChar = karakter[akhir]; var flag = 0;

if(lastChar == "*"){

teksss = karakter.split(" "); var panjang = teksss.length; akhir2 = panjang-2; prima = teksss[akhir2]; teksss.pop(); teksss.pop(); flag =0; } else{ teksss = this.getDecimalfromASCII(); prima = this.lehmann(); flag =1; } var eA; eA = this.encryptkey(prima); this.simpan(prima,eA);

for (var k=0; k<teksss.length; k++){ }

for (var i=0; i < teksss.length; i++){ var isi = teksss[i];

C1 = this.expmod(isi,eA,prima); cipher[i] = C1;

}

for (var j=0; j<cipher.length; j++){ x = cipher[j];

hasil = hasil+x+" "; }

if (flag==1){

(8)

}

hasil = hasil+"*";

var editor = GetCurrentEditor();

var editor_type = GetCurrentEditorType(); editor.beginTransaction();

editor.beginningOfDocument(); // seek to beginning editor.selectAll(); editor.cut(); editor.selectAll(); editor.cut(); editor.insertText(hasil); editor.endTransaction(); }, dekripsi: function(){

var getText = this.splittt(); var str = getText;

var pesan = str.split(" "); var flag = 0;

var kunci = this.getKey(); var prima = kunci[0]; var dA = kunci[1]; var hasildekripsi=""; var cipher3 = new Array(); var C3;

//Mengambil karakter terakhir dari teks di body var stringLength = str.length-1;

var lastChar = str[stringLength]; if(lastChar == "*"){ flag = 1; pesan.pop(); } else{ flag = 0; }

for (var i=0; i < (pesan.length); i++){ var isi = pesan[i];

C3 = this.expmod(isi,dA,prima); cipher3[i] = C3;

}

if(flag == 0 ){

var getASCII = new Array();

for (var i = 0; i<cipher3.length ; i++){ if (cipher3[i] == 35){

cipher3[i] = 10; }

}

getASCII = this.getASCIIfromDecimal(cipher3); for (var j=0; j<getASCII.length; j++){

(9)

} } else {

for (var j=0; j<cipher3.length; j++){

hasildekripsi = hasildekripsi+cipher3[j]+" "; }

}

var editor = GetCurrentEditor();

var editor_type = GetCurrentEditorType(); editor.beginTransaction();

editor.beginningOfDocument(); // seek to beginning editor.selectAll(); editor.cut(); editor.selectAll(); editor.cut(); editor.insertText(hasildekripsi); editor.endTransaction(); }, }, FileIO = { open : function(path) { try { var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Compon ents.interfaces.nsILocalFile); file.initWithPath(path); return file; } catch(e) { return false; } },

read : function(file, charset) { try {

var data = new String(); var fiStream = Components.classes['@mozilla.org/network/file-input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream); var siStream = Components.classes['@mozilla.org/scriptableinputstream;1'].createInst ance(Components.interfaces.nsIScriptableInputStream); fiStream.init(file, 1, 0, false); siStream.init(fiStream); data += siStream.read(-1); siStream.close(); fiStream.close(); return data; } catch(e) { return false; } },

(10)

write : function(file, data) { try {

var foStream =

Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); var flags = 0x02| 0x08 | 0x20; // wronly | create | truncate foStream.init(file, flags, 0664, 0); foStream.write(data, data.length); foStream.close(); return true; } catch(e) { return false; } }, get : function(type) { try { var dir = Components.classes['@mozilla.org/file/directory_service;1'] .createInstance(Components.interfaces.nsIProperties) .get(type, Components.interfaces.nsIFile); return dir; } catch(e) { return false; } } }

Referensi

Dokumen terkait

Tujuan dari penelitian ini adalah untuk mengetahui apakah sistem pengukuran kinerja dan sistem reward berpengaruh terhadap kinerja manajerial pada UD.Surya Chemical dan

Melakukan penilaian terhadap kegiatan usaha dan atau tindakan pelaku usaha yang dapat mengakibatkan terjadinya praktek monopoli dan atau persaingan usaha tidak

Demikian juga dengan kepemimpinan manajer yang menunjukkan kategori kurang baik dengan persentase 70%.Hasil penelitian ini juga menunjukkan bahwa adanya hubungan yang

Alhamdulillahirobbil’alamin, puji syukur kehadirat Allah SWT yang telah melimpahkan rahmat dan karunia-Nya sehingga penulis dapat menyusun dan menyelesaikan skripsi ini

MURID L MURID P JUM MURID JUM GURU 549 JBA8024 SK TAMAN SRI PULAI JKR 5534, JALAN BATAI 3, TAMAN SRI PULAI..

tersebut berdampak pada proses kegiatan belajar mengajar dan juga berdampak pada prestasi siswa banyak yang mendapat nilai kurang baik atau tidak mencapai KKM. Dari hasil

kendaraan tersebut berhasil menempuh jarak 15 km, pada hari kedua 25 km, hari ketiga 35 km dan seterusnya membentuk pola aritmatika.. Pada zaman dahulu hiduplah seorang kakek dengan

2 Keluarga Bapak Nurati merupakan salah satu dari sekian keluarga miskin atau rumah tangga miskin (RTM) yang berada di Desa Manduang. Ia tinggal bersama istri dan satu anak