SHA (Secure Hash Algorithm) adalah salah satu dari beberapa fungsi hash. Algoritma SHA-256 menghasilkan hash 256-bit (32-byte) yang unik, berukuran tetap. SHA-256 adalah salah satu fungsi hash penerus untuk SHA-1 dan merupakan salah satu fungsi hash terkuat yang tersedia.
PROBLEM :
I am using rsa key to encrypt a long string. But it throws an exception like javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:344) at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389) at javax.crypto.Cipher.doFinal(Cipher.java:2164)
CAUSE :
Using RSA to encrypt a large file is not a good idea. You could for example generate a random AES key, encrypt it using RSA and store it in the output file, and then encrypt the file itself with AES, which is much faster and doesn't have any problem with large inputs. The decryption would read the encrypted AES key, decrypt it, and then decrypt the rest of the file with AES.
" The RSA algorithm can only encrypt data that has a maximum byte length of the RSA key length in bits divided with eight minus eleven padding bytes, i.e. number of maximum bytes = key length in bits / 8 - 11 "
SOLVE
if key length 2048 maximum bytes data is 245 bytes
if key length 1024 maximum bytes data is 117 bytes
p value is 47
q value is 71
public key value is 79
Message : "HARI INI"
Question :
How Is Encryption And Decryption Process ?
Answer : MANUAL RSA ENCRYPTION PROCESS
Prime 1 (p) value :47
Prima 2 (q) value :71
public (e) key :79
N (p x q) value :3337
phi (N) --> (p-1) x (q-1) :3220
Private Key (d) : (1+k*3220)/79; k=1,2,3,....
find d with rounded results by trying k values
obtained private key value (d) :1019
So :
Public Key : (79,3220)
Private Key: (1019,3220)
Message (M) = HARI INI
===============
ENCRYPTION PROCESS
===============
Convert Message to Decimal Format
H = 72
A = 65
R = 82
I = 73
= 32
I = 73
N = 78
I = 73
For this encryption process, I break m into smaller blocks, for example m is broken into six blocks that require 3 digits
M0=726
M1=582
M2=733
M3=273
M4=787
M5=003
CipherText (C) = Plaintext (M) ^ e mod N
C0 = 726 ^ 79 mod 3337 = 215
C1 = 582 ^ 79 mod 3337 = 776
C2 = 733 ^ 79 mod 3337 = 1743
C3 = 273 ^ 79 mod 3337 = 933
C4 = 787 ^ 79 mod 3337 = 1731
C5 = 3 ^ 79 mod 3337 = 158
CipherText: 215.776.1743.933.1731.158
Plaintext (M) =Ciphertext (C) ^ d mod N
P0 = 215 ^ 1019 mod 3337 = 726
P1 = 776 ^ 1019 mod 3337 = 582
P2 = 1743 ^ 1019 mod 3337 = 733
P3 = 933 ^ 1019 mod 3337 = 273
P4 = 1731 ^ 1019 mod 3337 = 787
P5 = 158 ^ 1019 mod 3337 = 3
Sertifikat Elektronik lagi menjadi topik hangat akhir akhir ini terutama di Instansi Pemerintah. Contohnya bisa dibaca di artikel "Lemsaneg Luncurkan Sertifikasi Digital untuk Amankan Informasi Pemerintah" .
Sebenarnya apa sih sertifikat digital atau sertifikat elektronik itu?. Mari kita bahas satu per satu.
Kalau berdasarkan literatur yang saya dapatkan dari UU ITE No 11 Tahun 2008
Sertifikat Elektronik adalah sertifikat yang bersifat elektronik yang memuat Tanda Tangan Elektronik dan identitas yang menunjukkan status subjek hukum para pihak dalam Transaksi Elektronik yang dikeluarkan oleh Penyelenggara Sertifikasi Elektronik.
Sudah jelaskah dengan definisi diatas? Buat orang awam saya kira masih bingung dengan definisi diatas. Secara fisik, sertifikat digital hanyalah sebuah file. Saya tunjukan bentuk fisik sertifikat elektronik, temen temen bisa buka https://ib.bankmandiri.co.id/retail/Login.do?action=form.
Selanjutnya klik https, nanti akan muncul informasi seperti pada gambar, Temen temen klik aja "Informasi sertifikat". Nanti akan muncul sertifikat elektroniknya, seperti dibawah ini
Nah itu dia, bentuk sertifikat elektronik/digitalnya, Di Tab General ada beberapa informasi yang dapat kita baca terkait informasi sertifikat yaitu kegunaan sertifikat, diterbitkan untuk siapa,siapa penerbitnya, dan masa berakhir sertifikat. Untuk gambar diatas didapatkan informasi bahwa sertifikat tersebut di gunakan untuk meyakinkan dan membuktikan identitas yang benar dalam hal ini adalah benar server ib.bankmandiri.co.id, sertifikat di terbitkan untuk server ib.bankmandiri.co.id, diterbitkan oleh Symantec Class 3 EV SSL SGC CA - G2, dan masa berlaku sertifkat hingga 4 Juni 2016.
Kalau file sertifikat dibuka, bentuknya seperti ini
Mungkin ini sedikit gambaran tentang sertifikat elektronik, nanti saya sambung lagi, karena obrolin sertifikat elektronik cukup luas seperti bagaimana mendapatkan sertifikat, pembaruan sertifikat,revoke sertifikat, penerbit sertifikat, dll