Menyimpan Password Terenkripsi ke Database

Menyimpan Password Terenkripsi ke Database
Melanjutkan postingan kemarin tentang enkripsi simetris dan asimetris, kali ini saya coba buat aplikasi sederhana untuk menyimpan password yang terenkripsi ke dalam database. Misal akan saya buat form pendaftaran yang isinya Nama lengkap, username, email, dan password yang jika disubmit akan menyimpan data tersebut ke dalam database dimana password yang tersimpan dalam keadaan terenkripsi. Enkripsi yang akan saya gunakan adalah enkripsi base64.


Hierarki folder aplikasi yang akan saya buat kurang lebih seperti ini,

Menyimpan Password Terenkripsi ke Database


Jadi file yang akan dibuat adalah :
1.index.jsp : untuk form pendaftaran
2.daftar,java : untuk menangani form action dan melakukan enkripsi password lalu menyimpannya ke dalam database.
3.web.xml : untuk konfigurasi servlet

Sebelumnya, buat dulu databasenya. Dan buat tabelnya dengan struktur seperti ini :
CREATE TABLE IF NOT EXISTS `user` (
  `username` varchar(20) NOT NULL,
  `namaLengkap` varchar(25) NOT NULL,
  `email` varchar(20) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Lalu buat form untuk pendaftarannya. Simplenya seperti ini :
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Daftar</title>
    </head>
    <body>
    <center>
        <form action="daftar" method="post">
            <table align="center"><tr><td><h2>Daftar</h2></td></tr></table>
            <table width="300px" align="center" style="border:1px solid #000000;background-color:#efefef;">
                <tr><td colspan=2></td></tr>
                <tr><td colspan=2> </td></tr>
                <tr>
                    <td><b>Username</b></td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td><b>Nama Lengkap</b></td>
                    <td><input type="text" name="namaLengkap"></td>
                </tr>
                <tr>
                    <td><b>Email</b></td>
                    <td><input type="email" name="email"></td>
                </tr>
                <tr>
                    <td><b>Password</b></td>
                    <td><input type="password" name="password"></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="Submit" value="Daftar"></td>
                </tr>
                <tr><td colspan=2> </td></tr>
            </table>
        </form>
    </center>
    </body>
</html>

Selanjutnya buat file yang akan menangani form tersebut. Yaitu file daftar.java yang isinya seperti ini  :
package net.hanivinside;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tomcat.util.codec.binary.Base64;

public class daftar extends HttpServlet{
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    response.setContentType("text/html");  
      PrintWriter out = response.getWriter();  
      String connectionURL = "jdbc:mysql://localhost:3306/LoginApp"; //LoginApp ini nama databasenya
      Connection connection;  
      try{
                        String Username = request.getParameter("username"); 
                        String NamaLengkap = request.getParameter("namaLengkap");
                        String Email = request.getParameter("email");
                        String Password = request.getParameter("password");
                        
                        //dari sini mulai enkripsi               
                        byte[] byteArray = Base64.encodeBase64(Password.getBytes()); //mengambil bytes dari Password
                        System.out.println(Arrays.toString(byteArray)); //menyimpan hasil enkrip ke dalam array
                        String base64pass = new String(byteArray); //menyimpan hasil enkrip ke string base64pass
                      
                        Class.forName("com.mysql.jdbc.Driver");  //jdbc driver MySQL 
                        connection = DriverManager.getConnection(connectionURL, "root", "haniv"); //username dan password ke DB
                        //Query untuk menyimpan data ke database
                        PreparedStatement pst = connection.prepareStatement("insert into user(username,namaLengkap,email,password) values(?,?,?,?)");                      
                        pst.setString(1,Username);
                        pst.setString(2,NamaLengkap);  
                        pst.setString(3,Email);
                        pst.setString(4,base64pass);
      
        int i = pst.executeUpdate();  
        if(i!=0){  
                          out.println("Data berhasil disimpan di database");
        }  
        else{ 
                          out.println("Data gagal disimpan");
         }
         
      }  
      catch (Exception e){  
        out.println(e);  
      }  

 
                    
 }  
}

Terakhir tambahkan script ini ke dalam web.xml
<servlet>  
        <display-name>daftar</display-name>  
        <servlet-name>daftar</servlet-name>  
        <servlet-class>namapaket.namakelas</servlet-class>  
    </servlet>  
    
    <servlet-mapping>
        <servlet-name>daftar</servlet-name>
        <url-pattern>/daftar</url-pattern>
</servlet-mapping>

Sekarang coba jalankan aplikasinya. Jika berhasil tampilannya akan seperti ini
Menyimpan Password Terenkripsi ke Database

Setelah berhasil disubmit akan muncul tampilan seperti ini

Menyimpan Password Terenkripsi ke Database

Hasilnya di dalam database, password akan terlihat seperti ini

Menyimpan Password Terenkripsi ke Database

Video nya bisa dilihat disini



Sekian tutorial sederhana dalam Menyimpan Password Terenkripsi ke Database. Silakan dikembangkan lagi. Semoga bermanfaat.


Download Source Code

Untuk membuat form loginnya, silakan baca Aplikasi Login dengan Java MySQL
Previous
Next Post »

- Kritik dan saran sangat saya nantikan untuk kemajuan blog ini.
- Silakan report, jika ada link yang mati.
- Mohon untuk berkomentar sesuai dengan tema postingan.
- Dilarang berkomentar yang mencantumkan LINK AKTIF.
ConversionConversion EmoticonEmoticon