Dalam melakukan proses form adakalanya informasi yang dialirkan bersifat rahasia, maka salah satu bentuk keamanan yang bisa dilakukan dengan melakukan enkripsi terhadap informasi tersebut. Untuk javascript, terdapat library untuk melakukannya, yaitu cryptico.js. cryptico.js melakukan encrypt pada text di client-side.
cryptico.js mendukung RSA + AES methods dan text dapat dienkripsi melalui bit yang diberikan (228, 1024, etc.).
Isi yang dienkripsi dengan menggunakan sebuah public key dan hanya dapat didecrypt dengan kunci public key tersebut, yang tentu hanya jika sudah dimiliki oleh penerima
Cryptico.js tidak memerlukan framework JS apapun dan terdokumentasikan dengan baik.
Berikut ini beberapa sample nya:
Membuat RSA Key Pair dan Public Key String
Sam ingin mengirim pesan terenkripsi ke Matt. Dalam hal ini, Sam membutuhkan public key string Matt. Public key pair sendiri dapat dibuat oleh Maat seperti ini:
// The passphrase used to repeatably generate this RSA key. var PassPhrase = "The Moon is a Harsh Mistress."; // The length of the RSA key, in bits. var Bits = 1024; var MattsRSAkey = cryptico.generateRSAKey(PassPhrase, Bits);
Public key string Matt dapat dibuat seperti ini:
var MattsPublicKeyString = cryptico.publicKeyString(MattsRSAkey);
maka akan menampilkan seperti ini:
uXjrkGqe5WuS7zsTg6Z9DuS8cXLFz38ue+xrFzxrcQJCXtVccCoUFP2qH/AQ 4qMvxxvqkSYBpRm1R5a4/NdQ5ei8sE8gfZEq7dlcR+gOSv3nnS4/CX1n5Z5m 8bvFPF0lSZnYQ23xlyjXTaNacmV0IuZbqWd4j9LfdAKq5dvDaoE=
Mengenkripsi Pesan
Selanjutnya Matt mengirim public key stringnya ke Sam. Jadi Sam bisa mengenkripsi pesannya ke Matt.
var PlainText = "Matt, I need you to help me with my Starcraft strategy."; var EncryptionResult = cryptico.encrypt(PlainText, MattsPublicKeyString);
encryptionResult.cipher merupakan isi pesan yang sudah terenkripsi, hasilnya seperti ini:
OOHoAlfm6Viyl7afkUVRoYQv24AfdLnxaay5GjcqpxvEK+dph5kUFZEZIFKo vVoHoZbtUMekSbMqHQr3wNNpvcNWr4E3DgNLfMZQA1pCAUVmPjNM1ZQmrkKY HPKvkhmVKaBiYAJGoO/YiFfKnaylLpKOYJZctkZc4wflZcEEqqg=?cJPt71I HcU5c2LgqGXQKcx2BaAbm25Q2Ku94c933LX5MObL9qbTJEVEv29U0C3gIqcd qwMV6nl33GtHjyRdHx5fZcon21glUKIbE9P71NwQ=
Mendecrypt Pesan
Sam mengirim pesan yang terenkripsi ke Matt. Pesannya dapat di-decrypt seperti ini:
var CipherText = "OOHoAlfm6Viyl7afkUVRoYQv24AfdLnxaay5GjcqpxvEK+dph5kUFZEZIFKo vVoHoZbtUMekSbMqHQr3wNNpvcNWr4E3DgNLfMZQA1pCAUVmPjNM1ZQmrkKY HPKvkhmVKaBiYAJGoO/YiFfKnaylLpKOYJZctkZc4wflZcEEqqg=?cJPt71I HcU5c2LgqGXQKcx2BaAbm25Q2Ku94c933LX5MObL9qbTJEVEv29U0C3gIqcd qwMV6nl33GtHjyRdHx5fZcon21glUKIbE9P71NwQ="; var DecryptionResult = cryptico.decrypt(CipherText, MattsRSAkey);
Pesan yang sudah di-decrypt ada di DecryptionResult.plaintext
Untuk mendownload dan dokumentasi lebih jelas nya bisa ke https://github.com/wwwtyro/cryptico