Kamis, 15 Desember 2016

Teknik Penerapan Enkripsi RSA untuk Sekuriti Pesan

Melanjutkan tulisan dari http://www.softscients.web.id/2016/12/encrypt-file-using-rsa-java.html
Penulis akan membuat pemahaman, mengapa cara menerapkan enkripsi sebuah text dengan teknik RSA






        RSAOK rsa = new RSAOK();
        rsa.RSA(50);
        System.out.println("Public Key "+rsa.getPublicKey().toString());
        System.out.println("Modulus Key  "+rsa.getModulus().toString());
        System.out.println("Private Key "+rsa.getPrivateKey().toString());
        
        String karakater = "H"; //karakter yang akan di rsa kan
        BigInteger m = new BigInteger(karakater.getBytes());
        BigInteger encode = rsa.encrypt(m);
        BigInteger decode = rsa.decrypt(encode);
        System.out.println("m "+m.toString());
        System.out.println("encode "+encode.toString()+"; Panjang angka : "+encode.toString().length());
        System.out.println("decode "+decode.toString());



 

menghasilkan



Public Key 65537
Modulus Key  1017697839735491
Private Key 781833889592609
karakter H; ascii :72
encode 739322720308808; Panjang angka : 15
decode 72



 

Kamu bisa melihat angka 72  telah diubah menjadi 739322720308808 (angka yang cukup besar), bisa juga kita siasati dengan mengubah angka tersebut ke single digit


Sehingga kode 739322720308808 menjadi hdjdcchcadaiiai

Teknik Penerapan Enkripsi RSA untuk Sekuriti Pesan: Bagaimana dengan kata?

Kita butuh pemisah misalkan ada sebuah kalimat “ini rahasia”

Setiap huruf dipisah dengan huruf k sehingga digabung menjadi
jeijbbhhibjdcakgfhjbbecgededefkjeijbbhhibjdcakehhaeficdhhhjihkbgjhfcabiaffiddkdijgffbcbibdcfakdjhgcaejbbcbcddkdijgffbcbibdcfakbdjfiigjafbfbdekjeijbbhhibjdcakdijgffbcbibdcfak
sehingga yang dari semula kata “ini rahasia” terdiri dari 11 karakter (termasuk spasi)
menjadi
“jeijbbhhibjdcakgfhjbbecgededefkjeijbbhhibjdcakehhaeficdhhhjihkbgjhfcabiaffiddkdijgffbcbibdcfakdjhgcaejbbcbcddkdijgffbcbibdcfakbdjfiigjafbfbdekjeijbbhhibjdcakdijgffbcbibdcfak” menjadi 173 karakater
Anda bebas saja menggunakan huruf k atau karakter lainnya dalam memisahkan antar huruf

Untuk split kata tersebut cukup gunakan function string yang ada yaitu (misalkan dalam bahasa java)
String [] huruf3 = huruf2.split("k");

Public Key 65537
Modulus Key  1017697839735491
Private Key 781833889592609
Kata : ini rahasia
karakter i;     ascii :105;     encode 94891177819320 ; jeijbbhhibjdca
karakter n;     ascii :110;     encode 657911426434345 ; gfhjbbecgededef
karakter i;     ascii :105;     encode 94891177819320 ; jeijbbhhibjdca
karakter  ;     ascii :32;     encode 477045823777987 ; ehhaeficdhhhjih
karakter r;     ascii :114;     encode 169752018055833 ; bgjhfcabiaffidd
karakter a;     ascii :97;     encode 389655121813250 ; dijgffbcbibdcfa
karakter h;     ascii :104;     encode 397620491121233 ; djhgcaejbbcbcdd
karakter a;     ascii :97;     encode 389655121813250 ; dijgffbcbibdcfa
karakter s;     ascii :115;     encode 139588690515134 ; bdjfiigjafbfbde
karakter i;     ascii :105;     encode 94891177819320 ; jeijbbhhibjdca
karakter a;     ascii :97;     encode 389655121813250 ; dijgffbcbibdcfa
Enkripsi : jeijbbhhibjdcakgfhjbbecgededefkjeijbbhhibjdcakehhaeficdhhhjihkbgjhfcabiaffiddkdijgffbcbibdcfakdjhgcaejbbcbcddkdijgffbcbibdcfakbdjfiigjafbfbdekjeijbbhhibjdcakdijgffbcbibdcfak
Dekripsi : ini rahasia

Contoh menggunakan karakter selain huruf
Public Key 65537
Modulus Key  1017697839735491
Private Key 781833889592609
Kata : !@#$%^&*()_+=~`
karakter !;     ascii :33;     encode 605911738188386 ; gafjbbhdibiidig
karakter @;     ascii :64;     encode 363099641701104 ; dgdajjgebhabbae
karakter #;     ascii :35;     encode 910494409229071 ; jbaejeeajccjahb
karakter $;     ascii :36;     encode 562672661592259 ; fgcghcggbfjccfj
karakter %;     ascii :37;     encode 946766341700897 ; jeghggdebhaaijh
karakter ^;     ascii :94;     encode 404010906736683 ; eaeabajaghdggid
karakter &;     ascii :38;     encode 26056801614179 ; cgafgiabgbebhj
karakter *;     ascii :42;     encode 522049419583531 ; fccaejebjfidfdb
karakter (;     ascii :40;     encode 880547345554288 ; iiafehdefffecii
karakter );     ascii :41;     encode 1017273804442548 ; babhchdiaeeecfei
karakter _;     ascii :95;     encode 931117807133367 ; jdbbbhiahbdddgh
karakter +;     ascii :43;     encode 963863169637008 ; jgdigdbgjgdhaai
karakter =;     ascii :61;     encode 505584403865338 ; faffieeadigfddi
karakter ~;     ascii :126;     encode 724932052605477 ; hcejdcafcgafehh
karakter `;     ascii :96;     encode 662787132109618 ; ggchihbdcbajgbi
Enkripsi : gafjbbhdibiidigkdgdajjgebhabbaekjbaejeeajccjahbkfgcghcggbfjccfjkjeghggdebhaaijhkeaeabajaghdggidkcgafgiabgbebhjkfccaejebjfidfdbkiiafehdefffeciikbabhchdiaeeecfeikjdbbbhiahbdddghkjgdigdbgjgdhaaikfaffieeadigfddikhcejdcafcgafehhkggchihbdcbajgbik
Dekripsi : !@#$%^&*()_+=~`

Keterangan:
Penulis menggunakan bahasa java, kamu pun bisa menggunakan bahasa selain java seperti C#, Basic yang biasanya secara default sudah ada class yang telah built in, disini penulis hanya menerapkan teknik nya saja.

Referensi:
https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29
https://id.wikipedia.org/wiki/RSA
https://javadigest.wordpress.com/2012/08/26/rsa-encryption-example/
http://www.java2s.com/Tutorial/Java/0490__Security/BasicRSAexample.htm
http://www.java2s.com/Code/Java/Security/SimpleRSApublickeyencryptionalgorithmimplementation.htm

Posting Komentar