package com.java.example.encryption;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SignIn {
	public static void main(String[] args) {
		System.out.println("Listing all table name in Database!");
		Connection con = null;
		String url = "jdbc:mysql://ipfiletransferdb.isaacparker.org:3306/";
		String db = "ipfiletransferdb";
		String user = "isaacparkerorg";
		String pass = "fr09v23x";
		final String SALT = "80235y223";
		String endUser = "JavaUser3";
		String endPass = "Super Secret Password";
		String saltedPassword = SALT + endPass;
		String hashedPassword = generateHash(saltedPassword);
		String passHashFromDB = null;
		//int i;
		try{
			con = DriverManager.getConnection(url+db, user, pass);
			try{
				Statement st = con.createStatement();
				ResultSet res = st.executeQuery("SELECT * FROM contacts WHERE username = '"+endUser+"'");
				//				System.out.println("Emp_code: " + "\t" + "Emp_name: ");
				while (res.next()) {
					//i = res.getInt("id");
					passHashFromDB = res.getString("password");
					// System.out.println(i + "\t\t" + passHashFromDB);
				}
				con.close();
				
				
				
			}
			catch (SQLException s){
				System.out.println("SQL code does not execute.");
			}  
		}
		catch (Exception e){
			e.printStackTrace();
		}
		if (passHashFromDB.equals(hashedPassword)) {
			System.out.println("Login Sucessful");
		} else {
			System.out.println("Username and/or password unrecognized");
		}
	}
	public static String generateHash(String input) {
		StringBuilder hash = new StringBuilder();

		try {
			MessageDigest sha = MessageDigest.getInstance("SHA-1");
			byte[] hashedBytes = sha.digest(input.getBytes());
			char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
					'a', 'b', 'c', 'd', 'e', 'f' };
			for (int idx = 0; idx < hashedBytes.length; ++idx) {
				byte b = hashedBytes[idx];
				hash.append(digits[(b & 0xf0) >> 4]);
				hash.append(digits[b & 0x0f]);
			}
		} catch (NoSuchAlgorithmException e) {
			System.out.println("No Such Algorithm");
		}
		return hash.toString();
	}
}
