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,
Hierarki folder aplikasi yang akan saya buat kurang lebih seperti ini,
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
Setelah berhasil disubmit akan muncul tampilan seperti ini
Hasilnya di dalam database, password akan terlihat seperti ini
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
Comments
Post a Comment
-Berkomentarlah yang baik dan rapi.
-Menggunakan link aktif akan dihapus.