Selasa, 19 November 2013

Tutorial SMS gateway dengan gammu 1.27.0 di Windows 7 dengan HP Sony Ericsson W200i


Tutorial SMS gateway dengan gammu 1.27.0 di Windows 7 dengan HP Sony Ericsson W200i

Kali ini, saya akan sharing cara buat sms gateway dengan gammu seri 1.27.o di windows 7,
Nah sebelum dimulai, silahkan siapkan alat-alat yang dibutuhkan:
Nah pertama silahkan instal driver hpnya dulu,
setelah itu silahkan instal xampp,
setelah itu install gammu, tinggal extrak aja installnya :) ,
Porses instalasi standar aja kok cuman next-next doank ampek finish.
Setelah semua terinstall, kita tinggal konfigurasi gammu kita, berikut langkah2nya :
  • Pastikan HP dapat berkomunikasi dengan baik dengan PC kita,
  • Lihat port dan speed HP kita, cara liatnya :
    control panel -> device manager ->modems -> klik yang modem aja,
  • Nah setelah itu liat port dan speednya, contoh saya pake com7, speed 115200
  • setelah itu masuk ke direktori gammu, ->share ->doc ->gammu->config
  • Kopi kedua file  gammurc dan smsdrc ke direktori bin gammu tadi.
  • setelah itu edit file gammurc pake wordpad, edit bagian
    [gammu]
    port = com7:
    connection = at115200
  • Berikan tanda mark ; pada gammu1, gammu2, dst..
  • Nah setelah itu tinggal seting file smsdrc, edit pake wordpad lalu edit:
    port = com7:
    connection = at115200
    service = mysql
    user = root
    password = passwordroot
    pc = localhost
    database = kalkun
  • Nah setelah itu, kita masuk cmd dengan login sebagai administrator ketikkan:
    gammu –identify (pada direktory bin)
  • Nah jika muncul informasi mengenai hp kita, maka koneksi sudah berjalan bagus,
  • Langkah berikutnya adalah membuat servis gammu, caranya masuk ke direktory bin pada gammu, lalu ketikkan :
    gammu-smsd -c smsdrc -i
  • Jika gak ada eror maka udah berhasil, nah untuk meStart dan meStop servicenya buka perintah services.msc pada run,
  • Lalu klik start pada gammu
  • Nah jika ada yang diedit data-datanya maka kita harus instal ulang servis dari gammu tadi dengan cara:
    gammu-smsd -u
  • Dan kita lakukan instalasi lagi servisnya kembali.
Okeh itu saja kok caranya, gampang sekaliiii…
Semoga bisa bermanfaat informasinya..
thx ^_^

sember:
http://budisetiyawan.wordpress.com/2012/02/13/tutorial-sms-gateway-dengan-gammu-1-27-0-di-windows-7-dengan-hp-sony-ericsson-w200i/

window event di java

Window Event di Java

Contoh program berikut ini memberikan contoh bagaimana penanganan event di dalam window. Event akan aktif saat window diubah ukurannnya, diclose, aktif, dan sebagainya. Listener yang digunakan dalam contoh program ini adalah WindowListener, WindowFocusListener dan WindowStateListener.
Berikut ini tampilannya:
contoh-program-window-event-java

Berikut ini program lengkapnya:
001/*
002 * WindowEventDemo.java is a 1.4 example that requires
003 * no other files.
004 */
005
006import javax.swing.*;
007import java.awt.*;
008import java.awt.event.*;
009
010public class WindowEventDemo extends JPanel
011                             implements WindowListener,
012                                        WindowFocusListener,
013                                        WindowStateListener {
014    final static String newline = "\n";
015    final static String space = "    ";
016    static JFrame frame;
017    JTextArea display;
018
019    public WindowEventDemo() {
020        super(new BorderLayout());
021        display = new JTextArea();
022        display.setEditable(false);
023        JScrollPane scrollPane = new JScrollPane(display);
024        scrollPane.setPreferredSize(new Dimension(500, 450));
025        add(scrollPane, BorderLayout.CENTER);
026
027        frame.addWindowListener(this);
028        frame.addWindowFocusListener(this);
029        frame.addWindowStateListener(this);
030
031        checkWM();
032    }
033
034    //Some window managers don't support all window states.
035    //For example, dtwm doesn't support true maximization,
036    //but mimics it by resizing the window to be the size
037    //of the screen.  In this case the window does not fire
038    //the MAXIMIZED_ constants on the window's state listener.
039    //Microsoft Windows supports MAXIMIZED_BOTH, but not
040    //MAXIMIZED_VERT or MAXIMIZED_HORIZ.
041    public void checkWM() {
042        Toolkit tk = frame.getToolkit();
043        if (!(tk.isFrameStateSupported(Frame.ICONIFIED))) {
044            displayMessage(
045               "Your window manager doesn't support ICONIFIED.");
046        }
047        if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_VERT))) {
048            displayMessage(
049               "Your window manager doesn't support MAXIMIZED_VERT.");
050        }
051        if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_HORIZ))) {
052            displayMessage(
053               "Your window manager doesn't support MAXIMIZED_HORIZ.");
054        }
055        if (!(tk.isFrameStateSupported(Frame.MAXIMIZED_BOTH))) {
056            displayMessage(
057               "Your window manager doesn't support MAXIMIZED_BOTH.");
058        } else {
059            displayMessage(
060               "Your window manager supports MAXIMIZED_BOTH.");
061        }
062    }
063
064    public void windowClosing(WindowEvent e) {
065        displayMessage("WindowListener method called: windowClosing.");
066
067        //A pause so user can see the message before
068        //the window actually closes.
069        ActionListener task = new ActionListener() {
070            boolean alreadyDisposed = false;
071            public void actionPerformed(ActionEvent e) {
072                if (!alreadyDisposed) {
073                    alreadyDisposed = true;
074                    frame.dispose();
075                } else { //make sure the program exits
076                    System.exit(0);
077                }
078            }
079        };
080        Timer timer = new Timer(500, task); //fire every half second
081        timer.setInitialDelay(2000);        //first delay 2 seconds
082        timer.start();
083    }
084
085    public void windowClosed(WindowEvent e) {
086        //This will only be seen on standard output.
087        displayMessage("WindowListener method called: windowClosed.");
088    }
089
090    public void windowOpened(WindowEvent e) {
091        displayMessage("WindowListener method called: windowOpened.");
092    }
093
094    public void windowIconified(WindowEvent e) {
095        displayMessage("WindowListener method called: windowIconified.");
096    }
097
098    public void windowDeiconified(WindowEvent e) {
099        displayMessage("WindowListener method called: windowDeiconified.");
100    }
101
102    public void windowActivated(WindowEvent e) {
103        displayMessage("WindowListener method called: windowActivated.");
104    }
105
106    public void windowDeactivated(WindowEvent e) {
107        displayMessage("WindowListener method called: windowDeactivated.");
108    }
109
110    public void windowGainedFocus(WindowEvent e) {
111        displayMessage("WindowFocusListener method called: windowGainedFocus.");
112    }
113
114    public void windowLostFocus(WindowEvent e) {
115        displayMessage("WindowFocusListener method called: windowLostFocus.");
116    }
117
118    public void windowStateChanged(WindowEvent e) {
119        displayStateMessage(
120          "WindowStateListener method called: windowStateChanged.", e);
121    }
122
123    void displayMessage(String msg) {
124        display.append(msg + newline);
125        System.out.println(msg);
126    }
127
128    void displayStateMessage(String prefix, WindowEvent e) {
129        int state = e.getNewState();
130        int oldState = e.getOldState();
131        String msg = prefix
132                   + newline + space
133                   + "New state: "
134                   + convertStateToString(state)
135                   + newline + space
136                   + "Old state: "
137                   + convertStateToString(oldState);
138        display.append(msg + newline);
139        System.out.println(msg);
140    }
141
142    String convertStateToString(int state) {
143        if (state == Frame.NORMAL) {
144            return "NORMAL";
145        }
146        if ((state & Frame.ICONIFIED) != 0) {
147            return "ICONIFIED";
148        }
149        //MAXIMIZED_BOTH is a concatenation of two bits, so
150        //we need to test for an exact match.
151        if ((state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) {
152            return "MAXIMIZED_BOTH";
153        }
154        if ((state & Frame.MAXIMIZED_VERT) != 0) {
155            return "MAXIMIZED_VERT";
156        }
157        if ((state & Frame.MAXIMIZED_HORIZ) != 0) {
158            return "MAXIMIZED_HORIZ";
159        }
160        return "UNKNOWN";
161    }
162
163    /**
164     * Create the GUI and show it.  For thread safety,
165     * this method should be invoked from the
166     * event-dispatching thread.
167     */
168    private static void createAndShowGUI() {
169        //Make sure we have nice window decorations.
170        JFrame.setDefaultLookAndFeelDecorated(true);
171
172        //Create and set up the window.
173        frame = new JFrame("WindowEventDemo");
174        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
175
176        //Create and set up the content pane.
177        JComponent newContentPane = new WindowEventDemo();
178        newContentPane.setOpaque(true); //content panes must be opaque
179        frame.setContentPane(newContentPane);
180
181        //Display the window.
182        frame.pack();
183        frame.setVisible(true);
184    }
185
186    public static void main(String[] args) {
187        //Schedule a job for the event-dispatching thread:
188        //creating and showing this application's GUI.
189        javax.swing.SwingUtilities.invokeLater(new Runnable() {
190            public void run() {
191                createAndShowGUI();
192            }
193        });
194    }
195}
Semoga bermanfaat

sumber:
 http://contohprogram.info/java/window-event-di-java.html

Senin, 18 November 2013

Kriptografi Berbasis “Chaos"

Kriptografi Berbasis “Chaos"




Properti chaos yang paling bernilai bagi kriptografi adalah kepekaannya pada nilai awal.  Sebagaimana dijelaskan oleh Schneier (1996), salah satu dari dua prinsip Shannon yang dijadikan panduan dalam perancangan algoritma kriptografi adalah difusi (diffusion), yaitu menyebar pengaruh 1 bit (atau digit) data (plainteks atau kunci) ke seluruh bit cipherteks dengan maksud untuk menyembunyikan hubungan statistik antara plainteks dan cipherteks.  Prinsip difusi ini relevan dengan properti  chaos di atas, sebab jika nilai awal yang digunakan untuk membangkitkan nilai acak diubah sedikit, misalnya 1 bit, lalu nilai-nilai acak itu digunakan untuk mengenkripsi plainteks, maka cipherteks yang dihasilkan akan berbeda secara signifikan. Sifat peka menjamin bahwa jika pihak lawan mencoba mendekripsi data dengan kondisi awal berbeda dan mencari pola hubungan plainteks dan cipherteks, cara itu akan gagal (Roskin, 1999).
Pada dasarnya, terdapat dua cara umum untuk merancang algoritma kriptografi dengan chaos (Li, 2003):
  1. Menggunakan chaos untuk membangkitkan barisan kunci bilangan acak, yang digunakan untuk me-“mask” plainteks. Cara ini berkoresponden dengan  stream cipher
  2. Menggunakan plainteks dan/atau kunci rahasia sebagai kondisi awal dan/atau parameter kendali, dengan mengiterasikan sistem chaos sejumlah kali untuk memperoleh cipherteks. Cara ini berkoresponden dengan block cipher.
Kebanyakan stream cipher menggunakan pembangkit bilangan acak untuk menghasilkan keystream.  Pembangkit bilangan acak terdapat pada dua sisi, sisi pengirim dan sisi penerima. Dalam hal ini,  chaos dapat digunakan untuk membangkitkan keystream, selanjutnya kesytream ini digunakan untuk me-“mask” plainteks.
 Rancangan Algoritma Stream Cipher dengan Chaos
Algoritma stream cipher yang dibahas  di dalam tulisan ini me-mask karakter-karakter plainteks pi dengan kesystream ki yang dibangkitkan dari sistem. Algoritma stream cipher yang dirancang terdiri atas beberapa bagian:
i)  Fungsi pemotongan
ii) Pembangkitan keystream dengan chaos
iii) Enkripsi plainteks dengan kunci
iv) Dekripsi cipherteks dengan kunci
Setiap bagian yang disebutkan di atas dijelaskan secara rinci atu per satu di bawah ini.
 (i) Fungsi Pemotongan
Enkripsi dan dekripsi beroperasi dalam himpunan bilangan bulat yang nilainya dari 0 sampai 255, sedangkan barisan nilai chaos yang digunakan sebagai kesytream adalah bilangan riil antara 0 dan 1. Agar barisan nilai chaos dapat dipakai untuk enkripsi dan dekripsi, maka nilai chaos harus dikonversi ke nilai integer. Ada beberapa teknik konversi yang dapat digunakan, teknik yang umum misalnya mengambil 3 angka terakhir pada bagian mantissa bilangan riil. Sebagai contoh, dari 0.024568 diambil 3 angka terakhir dari bagian mantissanya yaitu 568.
Di dalam tulisan ini, konversi nilai chaos ke integer dilakukan dengan menggunakan fungsi pemotongan yang diusulkan oleh Lampton (xxxx). Caranya, nilai chaos dikalikan dengan 10 berulangkali sampai ia mencapai panjang angka (size) yang diinginkan, lalu memotong hasil perkalian tersebut untuk mengambil bagian integer-nya saja. Secara matematis, nilai chaos x dikonversi ke  integer dengan menggunakan persamaan berikut:
https://catatankriptografi.files.wordpress.com/2012/05/rumus.jpg

yang dalam hal ini count mulai dari 1 dan bertambah 1 sampai x * 10count > 10size – 1 . Hasilnya kemudian diambil bagian integer saja (dilambangkan dengan pasangan garis ganda pada persamaan 11). Sebagai contoh, misalkan x = 0.003176501 dan size = 4, maka dimulai dari count = 1 sampai count = 6 diperoleh
0.003176501 * 106 = 3176.501 > 103
kemudian ambil bagian integer-nya dengan
 https://catatankriptografi.files.wordpress.com/2012/05/rumus21.jpg

Jadi, diperoleh sebuah elemen dari barisan kunci yaitu 3176. Cara yang sama dilakukan untuk nilai-nilai chaos lainnya. Algoritma konversi nilai chaos ke integer dinyatakan dengan kode program C berikut ini:


(ii) Pembangkitan keystream dengan chaos

Kunci yang digunakan untuk me-mask plainteks dihasilkan dari konversi nilai chaos ke integer, seperti yang sudah diterangkan di atas. Nilai-nilai chaos dibangkitkan dari persamaan Logistic Map dengan mengambil konstanta r = 4.0. Normalnya, nilai xi dihitung langsung dari nilai chaos sebelumnya, xi – 1. Ini berarti bila seseorang mengetahui sebuah nilai xi dari barisan nilai chaos, maka ia dapat menggunakan xi untuk membangkitkan xi + 1, xi + 2, …, yang selanjutnya digunakan untuk mendekripsi cipherteks.
Untuk menambah kekuatan algoritma, maka nilai xi dibangkitkan setelah sejumlah iterasi tertentu. Tujuannya adalah untuk menghilangkan korelasi antara nilai-nilai chaos yang berturutan. Jumlah iterasi yang dibutuhkan untuk menghitung nilai chaos pertama, x1, ditentukan oleh nilai awal, x0. Nilai awal ini dikonversi ke integer dengan algoritma yang sudah dijelaskan di atas, hasilnya adalah jumlah iterasi yang diperlukan untuk mengiterasi persamaan Logistic Map. Nilai x yang diperoleh pada akhir iterasi berlaku sebagai “x0” yang baru untuk menghitung x1. Untuk x2, x3, dan seterusnya, jumlah iterasinya ditentukan dari jumlah iterasi untuk nilai chaos sebelumnya ditambah dengan size.
Dengan cara ini, seseorang yang mengetahui suatu nilai xi tertentu tidak mungkin dapat menghitung xi + 1 tanpa mengetahui jumlah iterasi yang diperlukan untuk mengiterasi persamaan (8).  Jumlah iterasi awal ditentukan oleh x0. Jadi, nilai awal merupakan nilai yang sangat menentukan keamanan stream cipher. Terdapat sejumlah tidak berhingga nilai-nilai antara 0 dan 1, oleh karena itu exhaustive key search untuk menemukan x0 menjadi sesuatu yang tidak mungkin dilalukan. Selain itu, seperti yang sudah dijelaskan di bagian 6, fungsi chaos peka terhadap perubahan kecil pada nilai awal, sehingga jika nilai awal yang dicoba pihak lawan sangat dekat dengan nilai awal yang digunakan untuk mengenkripsi data, pihak lawan masih akan memperoleh keluaran yang salah.
(iii)  Enkripsi plainteks dengan kunci
Enkripsi dikerjakan dengan menjumlahkan plainteks pi dan ki dalam modulo 256, seperti yang dituliskan dalam persamaan berikut:
        ci = (pi + ki) mod 256
Alasan pemilihan modulus 256 karena stream cipher mengenkripsi plainteks menjadi chiperteks satu karakter (1 byte) setiap kali.
(iv)  Dekripsi cipherteks dengan kunci
Dekripsi dikerjakan dengan mengurangkan cipherteks ci dengan pad ki dalam modulo 256, seperti yang dituliskan dalam persamaan berikut:
        pi = (ciki) mod 256
Contoh Enkripsi/Dekripsi Sederhana
Penulis mengilustrasikan contoh enkripsi dan dekripsi sederhana dengan program stream cipher yang sudah dibuat. Nilai awal yang digunakan untuk pembangkitan aliran kunci adalah 0.021503. Plainteks yang akan dienkripsi adalah string “selamat pagi”. Nilai ASCII yang berasosiasi dengan plainteks tersebut adalah
{115, 101, 108, 97, 109, 97, 116, 32, 112, 97, 103, 105}
yang dalam hal ini setiap karakter diepresentasikan dengan angka, misalnya 115 untuk ‘s’, 105 untuk ‘e’, dan seterusnya. String terebut disimpan di dalam berkas plainteks dan cipherteksnya disimpan di dalam berkas cipherteks.  Keystream yang dibangkitkan dengan Logistic Map misalkan adalah
{644, 296, 453, 376, 711, 929, 877, 659, 368, 865, 843, 286}
Kunci ini diperoleh dengan membangkitkan bilangan tiga-angka dari nilai-nilai chaos yang dihasilkan.  Selanjutnya, enkripsi dilakukan dengan cara menjumlahkan plainteks dengan kunci dalam modulo 256. Operasi ini diperlihatkan sebagai berikut:
Perhatikan bahwa semua karakter cipherteks adalah acak (semuanya berbeda) karena kita menjumlahkan barisan nilai acak (kunci) dengan barisan nilai tidak acak (plainteks). Selain itu, karakter plainteks yang sama tidak selalu menghasilkan karakter cipherteks yang sama pula (misalnya 97 tidak selalu menghasilkan 217, tetapi untuk 97 yang kedua menghasilkan 2, sedangkan 97 yang ketiga menghasilkan 194).
Penerima pesan membangkitkan kembali barisan kunci dengan menggunakan nilai awal chaos yang sama, lalu mengurangkan barisan cipherteks (setelah ditambah dengan 256 sejumlah kali sampai nilainya lebih besar dari elemen kunci)  dengan barisan kunci untuk memperoleh kembali plainteks semula:
https://catatankriptografi.files.wordpress.com/2012/05/contoh4.jpg


Hasil-hasil  Eksperimen
Program stream cipher berbasis chaos diujicoba dengan sebuah berkas teks  yang berukuran sedang. Plainteks dapat dilihat di bawah ini. Plainteks dienkripsi dengan menggunakan nilai awal r = 4.0, size = 3,  dan x0 = 0.00230872. Jika cipherteks didekripsi dengan nilai awal yang sama seperti pada waktu enkripsi, plainteks yang dihasilkan tepat sama seperti semula. Namun, jika cipherteks didekripsi dengan nilai awal yang sedikit berbeda, yaitu x0 = 0.002308716, maka plainteks yang dihasilkan salah karena barisan nilai chaos yang dihasilkan berbeda (peka terhadap perubahan kecil pada nilai awal).
———— Plainteks ————————————————————————————————————
Seorang wartawan mewawancarai seorang petani untuk mengetahui rahasia di balik buah jagungnya yang selama bertahun-tahun selalu berhasil memenangkan kontes perlombaan hasil pertanian. Petani itu mengaku ia sama sekali tidak mempunyai rahasia khusus karena ia selalu membagi-bagikan bibit jagung terbaiknya pada tetangga-tetangga di sekitar perkebunannya.
“Mengapa anda membagi-bagikan bibit jagung terbaik itu pada tetangga-tetangga anda? Bukankah mereka mengikuti kontes ini juga setiap tahunnya?” tanya sang wartawan.
 ”Tak tahukah anda?,” jawab petani itu. “Bahwa angin menerbangkan serbuk sari dari bunga-bunga yang masak dan menebarkannya dari satu ladang ke ladang yang lain. Bila tanaman jagung tetangga saya buruk, maka serbuk sari yang ditebarkan ke ladang saya juga buruk. Ini tentu menurunkan kualitas jagung saya. Bila saya ingin mendapatkan hasil jagung yang baik, saya harus menolong tetangga saya mendapatkan jagung yang baik pula.”
Moral cerita ini: Begitu pula dengan hidup kita. Mereka yang ingin meraih keberhasilan harus menolong tetangganya menjadi berhasil pula. Mereka yang menginginkan hidup dengan baik harus menolong tetangganya hidup dengan baik pula. Nilai dari hidup kita diukur dari kehidupan-kehidupan yang disentuhnya.
——– Cipherteks ————————————————————————————————————
Ì~Rd+ <‚­ € ¥ÃE£‰nê 8äHX¾¢ˆDWƒÌJ·WK¼ Ox絘 :>czPµ?H CÆtîÌ á¬Bw§îk~>è 0žJ’› Sk¾ &á*Ó5ÅT¢–´} 78£/ùüâÖ9m‚ ºO ¼ 4¶c,>\t&>ëÿÀ: ™ Füt }L˜LüU Ê!Ñ9ÛÌιRds±ùDDÐ×S’ˆOCð¸·F wý¬ð±Á¬ÄS:  íL¢Îßë‘#ÕGi™Ë~Bñ_ƒß×äÝãI×€PÌI?¿têÌ8Ó“g¹/1”{Zµ÷3„ðë,ÄT;%K˜×ý;’ïGEa÷Nâ(Üb©R L«wMëQ9Ž¶Y¤!ínÿIKOöà @Ò­Iô©„;Šñáoì§ß-“Õ$Ž 5Ÿú÷ø ·!_²wyÕÒ@Ó¯ñJ+ó•OÚ=}™ò¥o[„¢Ò¸ /ì šÞ¬EÛçWQ5I (õ ª¼\D?@ýΆ$ëä;™öÕ ô^¤iú|C±ê·@%é6|ÂX%"<TÀÉÒ·[óG<KpÈîŒF #ìÄÞ>rŒ‰*&)bâï[1]ô sä?5_цMM!àç8HÏê±O1Am ~“ØCEü‹÷KuÙ!î[Ê‘Q (5Gž!¨VêSß_ QµíFZRF ë!ËU ’ LÈ®?2Ë öÑÌfI’?ùçzÙí9OòªŽEΠ܀Øð « ,>i¦»„OÊ1[1]\#çÍ V@‹Ë`Ðï7ñ›ÜÛÅ 6ŽZ8ð Ü÷71Ü,›äòN€¿JÐ:ž\C À!»Ig)ŠÒ61 ö ˆ<+ÝÞސ±Ç šEHK=¢‹ &× ¬ø‰¹w>˜9 uï$SºË”àŠh åù4ÚL­ “°÷PN×Æ,s=<þ>š¿·’U€5 ­ùùó >”®G ›¾•ÊÛQƾCàsÉNj F&Iƒv¼#eû ÄŠÝðÝYKèö ;<*ÄLSÉ£H$Ø CGé‑¸. ·òçèþC7§Ì$ä…H WM­k…ô;3ò˜˜k:Dåý× û­-  ¦í8_XÔäÞ¼päW¸(Pö‘Q =ƒÞ5ÚŪ’wæË•ÙGõêÏè8‹-KátG­ð­þ%[1]•0e+ÈWñÔ¿jX$r‚ePbLõ1­ß Þp¶UE ð/’þ}Õ%.0ôWó¡ àV ‹1ì EÝ.“óÂ8/gõ„|?•…J Íò_[î ±ê;·Õ—ÿR‰§Hлzìëz ª½Yƒ¶íï}­£±sVŒkÑöÞ76]_þÞT-жáÜV¦ófOKs¹_Ñbù7› aÉú§¼G1{sZÛFmÃ]ì`Åÿíám»[1]=ŠðØE Ž­rýWîJïHN íÊ& L¾OÌVš ’ À]×zrO6¢F3Í] ÓõÜÍ䞃gp½{¶3pS5TŸFôP’غ ïõÏ Þ-|Mþ]ÎTxÈpKzd …3B0³`NI é\Kuæ¶ì>rh[1]Õˆ[(8à˜:—š¸«AîmL*"nû?ÚsR êð‘ N·_°à 1Îå@gô.Ꮙõè -YF· 42þn ȧ   ìLúÃ:ÊÄËß÷"å[1]ò|ÿK×0áû§K-=¡Z©3þ–ÊYcn×Õ˜áÕIÌfÛ’ó ­¥à%„ß]T/ul      MšeóÒ

Sumber
 http://catatankriptografi.wordpress.com/2012/05/04/kriptografi-berbasis-chaos-bagian-2/