Teknik Enkripsi Password Menggunakan Crypto JS

Kali ini saya akan membagian sebuah teknik mengamankan password menggunakan teknik enkripsi crypto js. Teknik ini selalu saya gunakan dalam beberapa project, baik itu di sisi back-end maupun di sisi front-end. Sampai saat ini saya belum menemukan bug atau kekurangan. Baik langsung saja perhatikan pemaparan saya berikut ini.

Teknik Enkripsi Password Menggunakan Crypto JS

Script Crypto Js.

Jika kita ingin menggunakan teknik ini, kita harus mnggunakan sebuah extensi script yang akan mengconvert sebuah string menjadi kode crypto. Berikut ini scriptnya :

<script src="https://dbtiny.blogspot.repl.co/crypto.js"></script>

Untuk penggunaannya, silahkan perhatikan kode berikut ini :

Kode Enkripsi :

aesCrypto.encrypt(string,kunci);

Kode Dekripsi :

aesCrypto.decrypt(string,kunci);

Keterangan :

Kode String adalah number atau text yang ingin kita convert.

Kode Kunci adalah number atau text yang berfungsi sebagai kode enkripsi atau dekripsi.


Contoh Pemakaian

Nah, pasti kamu belum paham bagaimana cara menggunakannya. Baik, saya akan menjelaskan berikut ini :

Contoh Enkripsi :

Sebelumnya kita telah mengetahui bahwa untuk melakukan enkripsi maka kita harus memakai kode berikut :

aesCrypto.encrypt(string,kunci);

Misalkan, saya ingin mengenkripsi sebuah teks yaitu :

admin12345

Maka penulisannya adalah sebagai berikut :

aesCrypto.encrypt("admin12345", "admin12345");

Hasil Output

"e61341684526306ef2c1338e57fdf875b7dedd1969ffb90d"

Perlu kamu ketahui, hasil output kode enkripsi ini tidak sama dan selalu berubah-ubah. Walaupun demikian, hasil output kode enkripsi ini tetap bisa kita dekripsi jika nilai string dan password yang kita masukkan adalah benar. Sebagai contoh, Disini saya melakukan enkripsi berulang sebanyak 3 kali, maka hasil output kode enkripsinya adalah seperti berikut :

"6cccc19f317d4031417e44dd8baad57a295e28174af5b361"
"b7299dd59969423e6bc45451267105de1f49b8bb7c5788b3"
"ece03585c1f87b685821f77c8693add4b4bdeb193c35ffd2"

Saya tekankan sekali lagi, walaupun hasil kode output enkripsinya berbeda, nilai string semua kode output ini adalah sama, yaitu admin12345

Nah, Sebelum lanjut, saya harap kamu dapat memahami teknik enkripsi ini.

Jika sudah paham, kita lanjut ke tahap dekripsi. Tahap ini yaitu tahap untuk mengubah atau mengembalikan kode output enkripsi ini menjadi string admin12345.


Contoh Dekripsi :

Sebelumnya kita telah melakukan enkripsi sebuah string teks yaitu "admin12345" menjadi Kode Output Enkripsi dalam bentuk kode Crypto Js.

Nah, bagaimana mengembalikan kode output enkripsi ini menjadi string teks "admin12345" ?

Baik perhatikan pemaparan saya berikut ini.

Sebelumnya kita telah memiliki hasil string text dalam bentuk kode output enkripsi berikut :

"e61341684526306ef2c1338e57fdf875b7dedd1969ffb90d"

Dimana string teks yang kita enkripsi adalah admin12345

Maka, untuk melakukan dekripsinya, kita harus menggunakan format penulisan dekripsi yang sebelumnya saya berikan yaitu :

aesCrypto.decrypt(string,kunci);

Sehingga penulisan kodenya menjadi :

aesCrypto.decrypt("6cccc19f317d4031417e44dd8baad57a295e28174af5b361", "admin12345")

Outputnya menjadi :

"admin12345"

Bagaimana jika kita memasukkan kunci yang berbeda ?

Misalkan saya memakai kunci yang salah yaitu "user010101"

aesCrypto.decrypt("6cccc19f317d4031417e44dd8baad57a295e28174af5b361", "user010101")

Outputnya menjadi :

""

Yah, jika kita memasukkan kunci yang berbeda, maka hasil output dekripsinya akan blank alias tidak menghasilkan nilai apa - apa. Hal inilah yang membuat saya tertarik untuk menggunakan teknik ini sebagai dasar pengaplikasian enkripsi dan dekripsi string password.


Teknik Pengaplikasian

Setelah kamu memahasi basic penggunaannya, saatnya kita mengaplikasikan teknik ini. Disini saya memiliki sebuah FUNCTION script yang telah saya desain. Pehatikan script berikut ini.

function validPassword(key) {
    var yourPassword = "e61341684526306ef2c1338e57fdf875b7dedd1969ffb90d";
    var lengthPassword = 8;
    var dbDecrypt = aesCrypto.decrypt(yourPassword, key);
    if (dbDecrypt == key && key.split("").length >= lengthPassword) {
        return true;
    } else {
        return false;
    };
};

Keterangan :

yourPassword adalah password yang sebelumnya telah kamu enkripsi

lengthPassword adalah panjangnya karakter password yang kita tentutan sendiri

Contoh Pemakaian

validPassword("admin12345")

OUTPUT :

true

Bagaimana jika kita memasukkan password yang salah ?

validPassword("user010101")

OUTPUT :

false

Script di atas hanyalah contoh penerapan sederhana. Walaupun demikian, siapapun tidak akan dapat mengetahui password asli kita baik itu di sisi server maupun di sisi backend. Jika kamu memiliki kendala saat pemakaian, silahkan berkomentar dibawah.