Open In App

Database encryption in Java

Last Updated : 02 Sep, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

Basically, encryption is the process or conversion of user data in code or more specifically in the cyphertext form in order to prevent unauthorized access, So, encryption is very much important in today’s world where we all are working on large datasets stored in databases and the credentials of the database must be secured in order to secure the privacy and unauthorized access.

To encrypt our database credentials we will be using Jaspyt api. We can download the jaspyt library from here.

Java Simplified Encryption

Jasypt is a java library which allows the developer to add basic encryption capabilities to the projects with minimum effort, and without writing any code with the help of a few additions in your project here and there.  Jasypt is highly configurable. 

To encrypt database credentials we’ll be doing these tasks-

  1. Create a POJO class.
  2. Create a properties file.
  3. Create a Java class.

Step 1: Creating a POJO class

So, we have created a Plain java class named Details.java having the actual username and actual password and the keys for username and password having special and non-special characters. The code as follows-

Java




// Creating a POJO class
  
package com.jdbc;
  
public class details {
  
    // Private fields
    private String key = "@2334dgdfg@#$%dsgdf";
    private String user = "root";
    private String key2 = "@1567sedf#2@";
    private String pass = "root";
  
    // Getter methods for private fields
    public String getKey() { return key; }
    public String getUser() { return user; }
    public String getKey2() { return key2; }
    public String getPass() { return pass; }
}


Step 2: Create an empty Properties file

Database encryption in Java - Create an empty properties file

Step 3- Create a MainConnecton class named TestJDBC2.java having all the lines of codes required for encryption and decryption process. We have used javax.crypto.Cipher Class, java.security.MessageDigest Abstract Class, org.jasypt.util.text.BasicTextEncryptor FinalClass  which will be going to perform the encryption and decryption process.

 So. First, we will going to use the key defined in the details.java file for encryption and decryption process of both username and password and will be going to call encrypt and decrypt method of  BasicTextEncryptor class.

Now let’s see the code-

Java




// Creating a java class
  
package com.jdbc;
  
import java.sql.Connection;
import java.io.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.security.MessageDigest;
import javax.crypto.Cipher;
  
import org.jasypt.util.text.BasicTextEncryptor;
  
public class TestJdbc2 {
    public static void main(String[] args)
        throws ClassNotFoundException, SQLException,
               IOException
    {
  
        // Fethches the system property
        String path = System.getProperty("user.dir");
        System.out.println("Working Directory = " + path);
  
        // Creating a FileReader and specified the
        // name of the file to read from
        FileReader reader = new FileReader(
            path + "/src/config.properties");
  
        Properties p = new Properties();
  
        // Reads a property list from the input byte stream
        p.load(reader);
        details dt = new details();
        BasicTextEncryptor bte = new BasicTextEncryptor();
  
        // Getting key from details class object and
        // set the password for encryption and decryption
        bte.setPassword(dt.getKey());
  
        // Encrypt the message
        String encryptedid = bte.encrypt(dt.getUser());
  
        // Set the system property
        p.setProperty("username", encryptedid);
        BasicTextEncryptor bte1 = new BasicTextEncryptor();
  
        // Setting a password
        bte1.setPassword(dt.getKey2());
  
        // Encrypt the password
        String encryptedps = bte1.encrypt(dt.getPass());
        p.setProperty("password", encryptedps);
  
        // Writes the property list in the properties table
        // to the output character stream in a format
        // suitable for using load method
        p.store(
            new FileWriter(path + "/src/config.properties"),
            " Properties Data");
  
        // Load the driver class into the memory at the
        // runtime
        Class.forName("com.mysql.cj.jdbc.Driver");
  
        // Establishes the connection and decrypt the
        // encryptedid and encryptedps
        Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/test",
            bte.decrypt(encryptedid),
            bte1.decrypt(encryptedps));
        System.out.println("Connection successful!!!");
        System.out.println("Done");
    }
}


As can be seen the process of encryption and decryption clearly in this code. After the execution of this code, the encrypted username and password can be seen in the Config.properties file. 

Database encryption in Java - seen the process of encryption and decryption

As Salt Algorithm processing can be clearly seen in the console process.

Now, let’s have a look at the Config.properties file-

Database encryption in Java - encrypted username and password can be seen in config properties file

As the encrypted credentials can be seen clearly in the Config. Properties file and the original database credentials are in the details.java but the Connection properties are fetching the details from properties file in the encrypted form and decrypting the same to communicate with the database servers.

So now the database encryption is an easy task for all of us in Java.



Similar Reads

Symmetric Encryption Cryptography in Java
Cryptography is the study of different techniques to secure data from an unauthorized entity. In computer science, we try to develop strategies and practices for protecting sensitive data. Most of the cryptography involves very advanced Mathematical functions used for securing data. The sole purpose of the algorithms developed for cryptography is t
10 min read
Asymmetric Encryption Cryptography in Java
Cryptography is the study of different techniques to secure data from an unauthorized entity. In computer science, we try to develop strategies and practices for protecting sensitive data. Most of the cryptography involves very advanced Mathematical functions used for securing data. The sole purpose of the algorithms developed for cryptography is t
4 min read
What is Java AES Encryption and Decryption?
Java has introduced a new approach in the technology sector as a programming language. Java takes the top spot of technologies used for coding. A Java application design firm can do everything from comprehensive business software to apps for mobile phones and wireless devices. Omnipresent of this Software support is always there to get embedded thr
5 min read
How to pre populate database in Android using SQLite Database
Introduction : Often, there is a need to initiate an Android app with an already existing database. This is called prepopulating a database. In this article, we will see how to pre-populate database in Android using SQLite Database. The database used in this example can be downloaded as Demo Database. To prepopulate a SQLite database in an Android
7 min read
How to Retrieve Database Information using Database Meta Data in JDBC?
JDBC (Java Database Connectivity) is the standard Java API for connecting and interacting with relational databases. It allowed to the Java applications to execute the SQL queries, retrieve the results, and perform the operations of the database in programmatically. In this article, we will learn to retrieve database Information Using Database Meta
3 min read
Encryption and Decryption Application in Android using Caesar Cipher Algorithm
Here, we are going to make an application of “Encryption-decryption”. By making this application we will be able to learn that how we can convert a normal text to ciphertext and encrypt our message. We will also be decrypting our message with help of a key by again converting it to a readable form. This article will help you to introduce basic conc
7 min read
Spring Boot - Enhancing Data Security Column Level Encryption
Column-level encryption is crucial to enhancing data security in a Spring Boot application. It involves encrypting sensitive data at the column level in a database, ensuring that even if the database itself is compromised, the sensitive information remains secure. In a Spring Boot application, you can achieve column-level encryption by combining th
9 min read
Java Program to Insert Data from a Database to a Spread Sheet
A database is a persistent collection of data and information which is organized in a particular manner for quick access similarly spreadsheets are another way to store data in tabular form. There are two types of databases of which structured database particularly MySQL database is illustrated here and LibreOffice Calc as the spreadsheet tool. Ins
3 min read
Introduction to JDBC (Java Database Connectivity)
JDBC stands for Java Database Connectivity. JDBC is a Java API to connect and execute the query with the database. It is a specification from Sun Microsystems that provides a standard abstraction(API or Protocol) for Java applications to communicate with various databases. It provides the language with Java database connectivity standards. It is us
6 min read
Java Database Connectivity with MySQL
In Java, we can connect our Java application with the MySQL database through the Java code. JDBC ( Java Database Connectivity) is one of the standard APIs for database connectivity, using it we can easily run our query, statement, and also fetch data from the database. Prerequisite to understand Java Database Connectivity with MySQL 1. You should h
3 min read
Article Tags :
Practice Tags :